Opublikowano wydanie projektu IvorySQL 5.0, rozwijającego edycję DBMS PostgreSQL, zapewniającą zgodność z aplikacjami zaplanowanymi do współpracy z DBMS Oracle. W IvorySQL ogłoszono możliwość działania jako przezroczysty zamiennik ostatniej wersji PostgreSQL, która różni się od niej jedynie ustawieniem „compatible_db”, włączającym tryb zgodności z Oracle. Kod napisany jest w języku C i jest dostępny na licencji Apache 2.0.
IvorySQL implementuje język proceduralny PL/iSQL, który odzwierciedla składnię PL/SQL w Oracle, wspiera pakiety w stylu Oracle oraz operacje z pakietami, takie jak „CREATE PACKAGE”. Oferowany jest zestaw funkcji i typów kompatybilny z Oracle, a także wspierana jest specyficzna dla Oracle składnia operacji, wyrażeń i operatorów, takich jak ALTER TABLE, DELETE, UPDATE, CONNECT BY (zapytania hierarchiczne), GROUP BY, UNION oraz MINUS.
W nowej wersji:
- Zrealizowano przejście na bazę kodu PostgreSQL 18.
- Poprawiono zgodność z DBMS Oracle: wprowadzono wsparcie dla zagnieżdżonych podprogramów, ROWID, parametrów NLS i OUT, translacji pustych łańcuchów na NULL, zmiany parserów w kontekście sesji, kodowania GB18030, funkcji SYS_GUID, SYS_CONTEXT oraz USERENV.
- Dodano operatory INSTR, FORCE VIEW oraz LIKE zgodne z Oracle.
- Rozszerzono możliwości PL/iSQL: dodano wsparcie dla składni CALL, %ROWTYPE oraz %TYPE.
- Wprowadzono pełne wsparcie dla Docker Compose, Docker Swarm oraz Kubernetes z menedżerem pakietów Helm. W IvorySQL Operator 5.0 i IvorySQL Cloud 5.0 dodano narzędzia do wizualnego zarządzania cyklem życia.
- Zapewniono wsparcie dla dziesięciu rozszerzeń do PostgreSQL: pg_cron, pgAudit, PostGIS, pgRouting, PGroonga, ddlx, pgsql-http, system_stats, plpgsql_check oraz pgvector.
- Sformułowano pakiety instalacyjne dla architektur X86_64, ARM64, MIPS oraz LoongArch.
- Przygotowano środowisko online do pracy z IvorySQL z przeglądarki, co pozwala na zainstalowanie IvorySQL na własnym systemie.
Dodatkowo można wspomnieć o wydaniu rozszerzenia SynchDB 1.3, przeznaczonego do replikacji w PostgreSQL danych z jednej lub kilku zewnętrznych DBMS, takich jak MySQL, MS SQLServer oraz Oracle. Takie zewnętrzne DBMS pełnią rolę źródła danych, które są bezpośrednio przenoszone do jednej docelowej bazy danych na bazie PostgreSQL, bez użycia dodatkowych warstw do orkiestracji procesu synchronizacji danych (wszystkie operacje synchronizacji są obsługiwane przez rozszerzenie SynchDB). Kod projektu napisany jest w językach C oraz Java i jest dostępny na licencji Apache 2.0.
System zawiera komponenty:
- Debezium Runner Engine — silnik oparty na Javie, oferujący moduły do przetwarzania strumieni zmian danych z różnych baz danych (MySQL, MS SQLServer i Oracle) oraz translacji otrzymanych danych w uniwersalnym formacie JSON.
- SynchDB Worker — uruchamia instancje Debezium Runner Engine do replikacji danych z określonych baz danych, przyjmuje od nich zmiany w formacie JSON i przekazuje do modułu Format Converter.
- SynchDB Launcher — tworzy i kończy działanie przetwarzaczy SynchDB, wykorzystując API PostgreSQL do uruchamiania procesów w tle.
- Format Converter — analizuje strumień zmian w formacie JSON, przekształca zewnętrzne typy danych oraz zapytania DDL w typy i zapytania zgodne z PostgreSQL.
- Replication Agent — przetwarza wyjście w formacie HeapTupleData z Format Converter i uruchamia metody do wstawiania danych do PostgreSQL.

W SynchDB 1.3 wprowadzono nowy silnik tworzenia zrzutów (snapshots), oparty na FDW (Foreign Data Wrapper), który wspiera współpracę z OpenLog Replicator. W porównaniu ze starym silnikiem bazującym na Debezium, nowy silnik znacząco zwiększa wydajność i redukuje opóźnienia podczas replikacji danych z dużych baz danych Oracle. Dodatkowo, w nowej wersji wprowadzono dodatkowe widoki ze statystykami (synchdb_genstats, synchdb_snapstats i synchdb_cdcstat), w OpenLog Replicator dodano wsparcie dla wyrażeń MODIFY oraz DEFAULT ON NULL, a także dodano wsparcie dla SGBD PostgreSQL 18 i IvorySQL 5.
Źródło: opennet.ru
