ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ libSQL Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ„ΠΎΡ€ΠΊΠ° Π‘Π£Π‘Π” SQLite

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ libSQL прСдпринята ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° создания Ρ„ΠΎΡ€ΠΊΠ° Π‘Π£Π‘Π” SQLite, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ для участия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ· сообщСства ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π², выходящих Π·Π° Ρ€Π°ΠΌΠΊΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния SQLite. Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ создания Ρ„ΠΎΡ€ΠΊΠ° называСтся достаточно Тёсткая ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° SQLite Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ° стороннСго ΠΊΠΎΠ΄Π° ΠΎΡ‚ сообщСства ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ потрСбности Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ. Код Ρ„ΠΎΡ€ΠΊΠ° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT (SQLite поставляСтся ΠΊΠ°ΠΊ общСствСнноС достояниС).

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ Ρ„ΠΎΡ€ΠΊΠ° Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с основном SQLite ΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ уровня качСства, сохраняя Π½Π°Π±ΠΎΡ€ тСстовых сцСнариСв ΠΈ постСпСнно Ρ€Π°ΡΡˆΠΈΡ€ΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ добавлСния Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π². Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прСдлагаСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования языка Rust, сохраняя ΠΏΡ€ΠΈ этом Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π½Π° языкС Π‘ΠΈ. Π’ случаС измСнСния ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ основного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° SQLite Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ libSQL Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ пСрСнСсти Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Π΅ измСнСния Π² основной ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π΅Π³ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ.

Π‘Ρ€Π΅Π΄ΠΈ ΠΈΠ΄Π΅ΠΉ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ SQLite ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ:

  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ срСдств для построСния распрСдСлённых Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ самой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС (LiteFS), ΠΈ Π±Π΅Π· развития ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° (dqlite, rqlite, ChiselStore).
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для использования асинхронных API, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ прСдоставляСмый ядром Linux интСрфСйс io_uring.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования SQLite Π² ядрС Linux, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² ядрС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ eBPF, для ситуаций, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠ· ядра Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, написанных Π½Π° Π»ΡŽΠ±Ρ‹Ρ… языках программирования ΠΈ скомпилированных Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ WebAssembly.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru