БСдьмая Π±Π΅Ρ‚Π° вСрсия OrioleDB, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° хранСния для PostgreSQL

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° Π±Π΅Ρ‚Π°-вСрсия Π΄Π²ΠΈΠΆΠΊΠ° хранСния OrioleDB beta7 ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½ΠΎΠ²Ρ‹Ρ… тСстов, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ PostgreSQL. Π’ вСрсии beta7 Π±Ρ‹Π»ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ ΠΈ ускорСниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния ΠΈ записи. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· OrioleDB планируСтся ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² 2025 Π³ΠΎΠ΄Ρƒ. Π”Π²ΠΈΠΆΠΎΠΊ написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ PostgreSQL, ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ BSD ΠΈ MIT.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ОrioleDB Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ хранСния для PostgreSQL, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ с Ρ†Π΅Π»ΡŒΡŽ прСодолСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ стандартного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° хранСния ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰Π΅ΠΉ эффСктивности систСмы. НапримСр, ОrioleDB позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· пСриодичСского выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ VACUUM для сборки мусора, благодаря Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° MVCC (Multi-Version Concurrency Control) Π½Π° Π±Π°Π·Π΅ Π»ΠΎΠ³ΠΎΠ² ΠΎΡ‚ΠΊΠ°Ρ‚Π° (undo logs), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ строк, Π° Ρ‚Π°ΠΊΠΆΠ΅ систСмы автоматичСского слияния страниц, содСрТащих Π΄Π°Π½Π½Ρ‹Π΅. ОrioleDB Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 64-разрядныС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ счётчиков.

Для упрощСния использования Π² распрСдСлённых систСмах ΠΈ распараллСливания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² OrioleDB ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ WAL-Π»ΠΎΠ³Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ строк. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ UPDATE поддСрТиваСтся Π·Π°ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ мСсту (Π±Π΅Π· освобоТдСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ записи ΠΈ создания Π½ΠΎΠ²ΠΎΠΉ), Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ OrioleDB Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ страниц с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π±Π΅Π· использования Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, прямоС связываниС страниц Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти со страницами Π² постоянном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° CoW (copy-on-write) ΠΏΡ€ΠΈ фиксации ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ для создания Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Ρ… ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ€Π΅ΠΆΠΈΠΌ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² сТатом Π²ΠΈΠ΄Π΅ с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ZSTD.

Из ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² сСдьмой Π±Π΅Ρ‚Π°-вСрсии OrioleDB ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ отмСчаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ индСксов Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ B-tree (Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ появится ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСх Ρ‚ΠΈΠΏΠΎΠ² индСксов PostgerSQL), Π° Ρ‚Π°ΠΊΠΆΠ΅ отсутствиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (PREPARE TRANSACTION) ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «REINDEX» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «CONCURRENTLY». OrioleDB Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ PostgreSQL.

Π’ тСстах ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ TPC-C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях, сСдьмая Π±Π΅Ρ‚Π°-вСрсия OrioleDB ΠΏΠΎΠΊΠ°Π·Π°Π»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ прСвосходство Π½Π°Π΄ ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ PostgreSQL. ВСстированиС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ количСством ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π’ тСстах, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π΄Π²ΠΈΠΆΠΎΠΊ OrioleDB достиг Π±ΠΎΠ»Π΅Π΅ высокой пропускной способности, измСряСмой Π² транзакциях Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ (tpmC). ΠŸΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ числа ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ OrioleDB ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° расти Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρƒ Π΄Π²ΠΈΠΆΠΊΠ° Heap Π² PostgreSQL наблюдалась тСндСнция ΠΊ стагнации ΠΈ Π΄Π°ΠΆΠ΅ сниТСнию послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π°.

БСдьмая Π±Π΅Ρ‚Π° вСрсия OrioleDB, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° хранСния для PostgreSQL
БСдьмая Π±Π΅Ρ‚Π° вСрсия OrioleDB, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° хранСния для PostgreSQL
БСдьмая Π±Π΅Ρ‚Π° вСрсия OrioleDB, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° хранСния для PostgreSQL

Π’ тСстах Π½Π° врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° срСднСС врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² OrioleDB Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½ΠΈΠΆΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с PostgreSQL. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, систСмы Π½Π° Π±Π°Π·Π΅ OrioleDB ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π·Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, обСспСчивая ΠΏΡ€ΠΈ этом Π±ΠΎΠ»Π΅Π΅ быстроС обслуТиваниС запросов. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ использования рСсурсов Π΄Π²ΠΈΠΆΠΎΠΊ OrioleDB продСмонстрировал Π±ΠΎΠ»Π΅Π΅ эффСктивноС использованиС CPU ΠΈ памяти, благодаря ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ рСсурсами.

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