Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ TidesDB 1.0, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ACID Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π΅ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ стабилно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° TidesDB, Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‰ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡/стойност. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ самостоятСлно, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° Π²Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π² прилоТСния. ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ оптимизация Π·Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚ΠΈ ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· MPL 2.0. ΠžΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡΡ‚Π° са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Π΅Π·ΠΈΡ†ΠΈ C++, Go, Java, Python, Rust, Lua ΠΈ JavaScript.

Π—Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° структура LSM-tree (ΠΆΡƒΡ€Π½Π°Π»Π½ΠΎ-структурирано Π΄ΡŠΡ€Π²ΠΎ със сливанС), осигуряваща висока производитСлност Π½Π΅ само ΠΏΡ€ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈ изпълнСниС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ запис ΠΈ промяна Π½Π° Π΄Π°Π½Π½ΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ записитС ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ запис Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ само сСмСйството ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π·Π°ΠΏΠΈΡΡŠΡ‚. Π—Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ускоряванС Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ индСкси ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° bloom-Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ (позволяват ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° принадлСТност към мноТСство, допускат Ρ„Π°Π»ΡˆΠΈΠ²ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° липсващ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚, Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ пропуск Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚).

Има пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, позволяващи Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΎΠ±Ρ…Π²Π°Ρ‰Π°Ρ‰ΠΈ сСмСйствата ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΈ ΠΏΡ€ΠΈ нСобходимост Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ отмяна Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π”Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² компрСсиран Π²ΠΈΠ΄ с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° компрСсия, ΡΠ²ΡŠΡ€Π·Π°Π½ със сСмСйството ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ поставянС Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ сСмСйствата ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π² ΠΏΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π‘Π”.

Основни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° сСмСйства ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ (Column Families) β€” ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡/стойност. Π—Π° всяко сСмСйство ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ свои memtable, SSTable ΠΈ WAL-ΠΆΡƒΡ€Π½Π°Π».
  • ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ…Π²Π°Ρ‰Π°Ρ‰ΠΈ няколко ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ със сСмСйства ΠΎΡ‚ ΠΊΠΎΠ»ΠΎΠ½ΠΈ.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° двупосочни ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ, позволяващи Π΄Π° сС ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ Π΄Π²ΠΎΠΉΠΊΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡/стойност Π½Π°ΠΏΡ€Π΅Π΄ ΠΈΠ»ΠΈ Π½Π°Π·Π°Π΄ спрямо ΠΈΠ·Π±Ρ€Π°Π½Π°Ρ‚Π° позиция Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° сортиранС.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° добавянС Π½Π° собствСни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° сравнСниС Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅. НаличиС Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° сравнСниС memcmp, string ΠΈ numeric.
  • Π’ΠΎΠ΄Π΅Π½Π΅ Π½Π° Π»ΠΎΠ³ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ (WAL, Write-Ahead Log) ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° memtable (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚) ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π»ΠΎΠ³ ΠΏΡ€ΠΈ стартиранС.
  • ИзползванС Π½Π° Bloom-Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠΈΡ‚Π΅ Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€Π΅Π΄ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΎΡ‚ SSTable (постоянно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Snappy, LZ4 ΠΈ ZSTD Π·Π° компрСсиранС Π½Π° записитС Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ SSTable ΠΈ WAL-Π»ΠΎΠ³Π°.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° опрСдСлянС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΆΠΈΠ²ΠΎΡ‚ Π½Π° записитС (TTL) ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° просрочСнитС записи.
  • Π’Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° синхронизация Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ с постоянното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅: NONE (Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΈΡ), BACKGROUND (балансиран), FULL (Π½Π°ΠΉ-надСТдния).
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° настройка Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° memtable, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° компрСсия, bloom-Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ‚Π΅, Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° синхронизация ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π·Π° всяко сСмСйство ΠΊΠΎΠ»ΠΎΠ½ΠΈ.
  • ΠŸΡ€ΠΎΡΡ‚ C API, ΠΊΠΎΠΉΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π° 0 ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ изпълнСниС Π½Π° опСрацията ΠΈ -1 ΠΏΡ€ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°.
  • ИзползванС Π½Π° SBHA (Sorted Binary Hash Array) Π·Π° Π±ΡŠΡ€Π·ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² SSTable, позволяващо опрСдСлянС Π½Π°_offsets_ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π±Π΅Π· пълно сканиранС.
  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ прСносим Π±ΠΈΠ½Π°Ρ€Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° прСдставянС Π½Π° Π±Π°Π·Π°Ρ‚Π°, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ вСрсиониранС.
  • Π’Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° цСлостта, ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ Π² Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster