Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ SQLite Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ бэкСнд HC-tree с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° SQLite Π½Π°Ρ‡Π°Π»ΠΈ тСстированиС ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ бэкСнда HCtree, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ строк (row) ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ распараллСливания ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запросов. Новый бэкСнд Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ эффСктивности использования SQLite Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрных систСмах, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… приходится ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большоС число ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросов ΠΊ Π‘Π” Π½Π° запись.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ b-tree, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ примСняСмыС Π² SQLite для хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ рассчитаны Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ SQLite Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ записи Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. Π’ качСствС экспСримСнта Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ стали Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ для хранСния структуры HC-tree, Π±ΠΎΠ»Π΅Π΅ подходящиС для распараллСливания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи.

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² HCtree записи примСняСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ раздСлСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ страниц ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° MVCC (многовСрсионноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΌ доступом), Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π½Π° основС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅ΠΉ вмСсто Π½Π°Π±ΠΎΡ€ΠΎΠ² страниц. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ΠΈ записи Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² привязкС ΠΊ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρƒ Π‘Π”, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ становятся Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π² основной Π‘Π” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ открытия Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ:

  • «BEGIN» — Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ доступС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π’ случаС выполнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи транзакция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ зафиксирована Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π·Π° врСмя Π΅Ρ‘ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи Π² Π‘Π”.
  • «BEGIN CONCURRENT» — Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ свСдСния ΠΎ доступС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π’ случаС выполнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи транзакция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ зафиксирована Ссли с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° создания ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π° Π² Π‘Π” Π±Ρ‹Π»ΠΈ зафиксированы Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  • «BEGIN EXCLUSIVE» — послС открытия Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π΄ΠΎ своСго Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

HCtree ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² стилС «master-slave», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π‘Π” ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ Π‘Π” Π² состоянии, синхронизированном с основной Π‘Π”. HCtree Ρ‚Π°ΠΊΠΆΠ΅ снимаСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π‘Π” — вмСсто 32-разрядных ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² страниц Π΄Π°Π½Π½Ρ‹Ρ… Π² HCtree ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ 48 разрядныС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π‘Π” с 16 Ρ‚Π΅Π±ΠΈΠ±Π°ΠΉΡ‚ Π΄ΠΎ 1 эксбибайт (ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ Ρ‚Π΅Π±ΠΈΠ±Π°ΠΉΡ‚). ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ SQLite с бэкСндом HCtree Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π½ΠΈΠΆΠ΅ классичСского ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ бэкСнда. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ SQLite с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ HCtree смогут ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊ Π‘Π” Π½Π° Π±Π°Π·Π΅ структуры HC-tree, Ρ‚Π°ΠΊ ΠΈ ΠΊ старым Π‘Π” SQLite.

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