Die Beta-Version der OrioleDB-Speichermaschine beta7 wurde präsentiert, und es wurden Ergebnisse neuer Tests veröffentlicht, die eine signifikante Leistungssteigerung im Vergleich zu traditionellem PostgreSQL zeigen. In der Version beta7 wurden Optimierungen eingeführt, die darauf abzielen, die Verarbeitung von Multi-Thread-Lasten zu verbessern und die Lese- und Schreiboperationen zu beschleunigen. Die erste stabile Version von OrioleDB ist für das Jahr 2025 geplant. Die Engine ist in C geschrieben und wird unter einer PostgreSQL-Lizenz verteilt, die ähnlich wie die Lizenzen von BSD und MIT ist.
Das OrioleDB-Projekt entwickelt eine alternative Speichermaschine für PostgreSQL, die darauf abzielt, die Einschränkungen des Standard-Speichermoduls zu überwinden und die Gesamteffizienz des Systems zu steigern. Beispielsweise ermöglicht OrioleDB, auf eine regelmäßige Ausführung der VACUUM-Operation zur Müllabfuhr zu verzichten, dank der Implementierung eines MVCC-Mechanismus (Multi-Version Concurrency Control) auf der Basis von Rückgängigmachungsprotokollen (undo logs), die auf der Ebene einzelner Blöcke und Zeilen arbeiten, sowie eines automatischen Seitenzusammenführungs-Systems zur Datenhaltung. OrioleDB verwendet auch 64-Bit-Transaktionsidentifikatoren, was das Problem der Überlaufzähler löst.
Um die Nutzung in verteilten Systemen und die Parallelisierung von Operationen in OrioleDB zu erleichtern, wurde eine WAL-Protokollierung der Transaktionen auf der Zeilenebene organisiert. Bei der Ausführung der UPDATE-Operation wird eine In-Place-Datenänderung unterstützt (ohne die aktuelle Aufzeichnung freizugeben und eine neue zu erstellen), was sich positiv auf die Leistung auswirkt. In OrioleDB wurden auch Funktionen wie das Lesen von Datenseiten ohne Verwendung von Sperren, die direkte Verknüpfung von Seiten im Arbeitsspeicher mit Seiten im persistenten Speicher, die Anwendung des CoW-Mechanismus (copy-on-write) zur Erstellung von konsistenten Snapshots zu jedem Zeitpunkt und der Modus der komprimierten Datenspeicherung unter Verwendung des ZSTD-Algorithmus realisiert.
In der siebten Beta-Version von OrioleDB gibt es einige Einschränkungen, darunter die Möglichkeit, nur Indizes im B-Baum-Format zu verwenden (in Zukunft wird die Unterstützung aller PostgreSQL-Indextypen folgen), sowie das Fehlen der Unterstützung für vorbereitete Transaktionen (PREPARE TRANSACTION) und den Befehl „REINDEX“ im Modus „CONCURRENTLY“. OrioleDB wird als plug-in Erweiterung implementiert, die Änderungen am Haupt-Code von PostgreSQL erfordert.
In den Leistungstests von TPC-C, die die Last der Transaktionsverarbeitung unter realistischen Bedingungen simulieren, zeigte die siebte Beta-Version von OrioleDB eine deutliche Überlegenheit gegenüber dem Standard-PostgreSQL-Engine. Die Tests wurden mit unterschiedlichen Anzahl zeitgleich arbeitender Clients durchgeführt, um die Skalierbarkeit und Leistung des Systems bei steigender Last zu bewerten.
In den Tests, die die Durchsatzrate von Transaktionen bewerteten, erreichte die OrioleDB-Engine eine deutlich höhere Durchsatzrate, gemessen in Transaktionen pro Minute (tpmC). Mit der erhöhten Anzahl an Clients wuchs die Leistung von OrioleDB weiterhin linear, während die Heap-Engine in PostgreSQL dazu tendierte, nach einem bestimmten Schwellenwert zu stagnieren und sogar zu sinken.



In den Reaktionszeittests war die durchschnittliche Reaktionszeit von Transaktionen in OrioleDB deutlich niedriger im Vergleich zu PostgreSQL. Somit können Systeme auf Basis von OrioleDB mehr Transaktionen in demselben Zeitraum verarbeiten und dabei eine schnellere Bearbeitung von Anfragen gewährleisten. Bei der Messung der Ressourcennutzung zeigte die OrioleDB-Engine eine effizientere Nutzung von CPU und Speicher dank optimierter Ressourcenverwaltung.
Quelle: opennet.ru
