Представена е бета-версия на хранилищния двигател OrioleDB beta7 и публикувани резултати от нови тестове, демонстриращи значително повишаване на производителността в сравнение с традиционния PostgreSQL. В версия beta7 бяха внедрени оптимизации, насочени към подобряване на работата с многопоточни натоварвания и ускоряване на операциите по четене и запис. Първият стабилен релиз на OrioleDB е планиран за 2025 година. Двигателят е написан на езика C и се разпространява под лиценз от 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 (в бъдеще ще се появи поддръжка на всички типове индекси на PostgreSQL), както и липсата на поддръжка за предварително подготвени транзакции (PREPARE TRANSACTION) и командата «REINDEX» в режим «CONCURRENTLY». OrioleDB е реализиран като добавка, изискваща промени в основната кодова база на PostgreSQL.
В тестовете за производителност TPC-C, които моделират натоварването на транзакционната обработка в реални условия, седмата бета версия на OrioleDB показа значително предимство спрямо стандартния двигател на PostgreSQL. Тестването е проведено с различно количество едновременно работещи клиенти, за да се оцени мащабируемостта и производителността на системата при увеличаване на натоварването.
В тестовете, оценяващи пропускната способност на транзакциите, двигателят OrioleDB постигна по-висока пропускна способност, измервана в транзакции в минута (tpmC). С увеличаването на броя на клиентите производителността на OrioleDB продължи да расте линейно, докато при двигателя Heap в PostgreSQL се наблюдаваше тенденция към стагнация и дори намаляване след определен праг.



В тестовете на времето за реакция средното време за реакция на транзакциите в OrioleDB беше значително по-ниско в сравнение с PostgreSQL. По този начин системите на базата на OrioleDB могат да обработват повече транзакции за същия период от време, осигурявайки при това по-бързо обслужване на заявките. При измерване на използването на ресурси двигателят OrioleDB показа по-ефективно използване на CPU и памет, благодарение на оптимизираното управление на ресурсите.
Източник: opennet.ru
