Die Veröffentlichung der Version 5.0 des IvorySQL-Projekts, das eine PostgreSQL-Datenbank-Edition entwickelt, die mit Anwendungen kompatibel ist, die für Oracle-Datenbanken entwickelt wurden. IvorySQL bietet die Möglichkeit, als transparente Alternative zur neuesten Version von PostgreSQL zu fungieren, deren Unterscheidungsmerkmal die Einstellung „compatible_db“ ist, die den Kompatibilitätsmodus mit Oracle umfasst. Der Code ist in C geschrieben und unter der Lizenz Apache 2.0 verfügbar.
IvorySQL implementiert die prozedurale Sprache PL/iSQL, die die PL/SQL-Syntax in Oracle nachahmt, unterstützt Oracle-Stil Pakete und Paketoperationen wie „CREATE PACKAGE“. Ein mit Oracle kompatibles Funktions- und Typset wird bereitgestellt, und die spezifische Oracle-Syntax für Operationen, Ausdrücke und Operatoren wie ALTER TABLE, DELETE, UPDATE, CONNECT BY (hierarchische Abfragen), GROUP BY, UNION und MINUS wird ebenfalls unterstützt.
In der neuen Version:
- Der Übergang zur Codebasis von PostgreSQL 18 wurde vollzogen.
- Die Kompatibilität mit Oracle-Datenbanken wurde verbessert: Unterstützung für verschachtelte Unterprogramme, ROWID, NLS- und OUT-Parameter, die Übersetzung leerer Zeichenfolgen in NULL, das Wechseln von Parsern in Abhängigkeit von Sitzungen, GB18030-Kodierungen sowie die Funktionen SYS_GUID, SYS_CONTEXT und USERENV wurden implementiert.
- Oracle-kompatible Operatoren wie INSTR, FORCE VIEW und LIKE wurden hinzugefügt.
- Die Möglichkeiten von PL/iSQL wurden erweitert: Unterstützung für CALL-Syntax, %ROWTYPE und %TYPE wurde hinzugefügt.
- Vollständige Unterstützung für Docker Compose, Docker Swarm und Kubernetes mit dem Paketmanager Helm wurde realisiert. In IvorySQL Operator 5.0 und IvorySQL Cloud 5.0 wurden Tools zur visuellen Verwaltung des Lebenszyklus hinzugefügt.
- Die Unterstützung für zehn Erweiterungen von PostgreSQL wurde sichergestellt: pg_cron, pgAudit, PostGIS, pgRouting, PGroonga, ddlx, pgsql-http, system_stats, plpgsql_check und pgvector.
- Installationspakete für die Architekturen X86_64, ARM64, MIPS und LoongArch wurden erstellt.
- Eine Online-Umgebung für die Arbeit mit IvorySQL über den Browser wurde vorbereitet, wodurch die Installation von IvorySQL auf dem eigenen System überflüssig wird.
Zusätzlich kann die Veröffentlichung der SynchDB-Erweiterung 1.3 erwähnt werden, die für die Replikation von Daten in PostgreSQL aus einer oder mehreren externen Datenbanken wie MySQL, MS SQLServer und Oracle gedacht ist. Diese externen Datenbanken fungieren als Datenquellen, die direkt in eine Ziel-Datenbank auf Basis von PostgreSQL übertragen werden, ohne dass zusätzliche Schichten für die Orchestrierung des Daten-Synchronisationsprozesses erforderlich sind (alle Synchronisationsoperationen werden von der SynchDB-Erweiterung verarbeitet). Der Code des Projekts ist in C und Java geschrieben und steht unter der Lizenz Apache 2.0.
Das System umfasst folgende Komponenten:
- Debezium Runner Engine – eine Java-Engine, die Module zur Verarbeitung von Änderungsdatenströmen aus verschiedenen DBMS (MySQL, MS SQLServer und Oracle) bereitstellt und die erhaltenen Daten im universellen JSON-Format überträgt.
- SynchDB Worker – startet Instanzen der Debezium Runner Engine zur Replikation von Daten aus bestimmten DBMS, empfängt von ihnen Änderungen im JSON-Format und übergibt sie an das Modul Format Converter.
- SynchDB Launcher – erstellt und beendet die SynchDB-Handler, wobei die PostgreSQL-API zum Starten von Hintergrundprozessen verwendet wird.
- Format Converter – analysiert den Änderungsstrom im JSON-Format, wandelt externe Datentypen und DDL-Anfragen in PostgreSQL-kompatible Typen und Anfragen um.
- Replication Agent – verarbeitet die Ausgabe im Format HeapTupleData aus dem Format Converter und ruft Methoden zum Einfügen von Daten in PostgreSQL auf.

In SynchDB 1.3 wurde eine neue Snapshot-Engine implementiert, die auf FDW (Foreign Data Wrapper) basiert und die Zusammenarbeit mit OpenLog Replicator unterstützt. Im Vergleich zur alten Debezium-basierten Engine ermöglicht die neue Engine eine signifikante Verbesserung der Leistung und eine Reduzierung der Verzögerungen bei der Replikation von Daten aus großen Oracle-Datenbanken. Darüber hinaus bietet die neue Version zusätzliche Ansichten mit Statistiken (synchdb_genstats, synchdb_snapstats und synchdb_cdcstat), die Unterstützung für die MODIFY- und DEFAULT ON NULL-Ausdrücke im OpenLog Replicator und die Unterstützung für die DBMS PostgreSQL 18 und IvorySQL 5.
Quelle: opennet.ru
