Представена бета-версия движка за съхранение OrioleDB beta7 и публикувани резултати от нови тестове, демонстриращи значително повишение на производителността в сравнение с традиционния PostgreSQL. В версия beta7 бяха внедрени оптимизации, насочени към подобряване на работата с многопоточни натоварвания и ускоряване на операциите по четене и запис. Първият стабилен релиз на OrioleDB е планиран за 2025 година. Движокът е написан на езика Си и се разпространява под лицензия PostgreSQL, подобна на лицензиите BSD и MIT.
Проектът OrioleDB развива алтернативен двигател за съхранение за PostgreSQL, разработен с цел преодоляване на ограниченията на стандартния механизъм за съхранение и повишаване на общата ефективност на системата. Например, OrioleDB позволява да се избегне периодичното изпълнение на операция VACUUM за събиране на боклука, благодарение на внедряването на механизма MVCC (Multi-Version Concurrency Control) на база логовете за обратно възстановяване (undo logs), работещи на ниво отделни блокове и редове, а също така и на системата за автоматично сливане на страници, съдържащи данни. OrioleDB също така използва 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
