Udgivelsen af IvorySQL 5.0 er offentliggjort, et projekt der udvikler en version af PostgreSQL-database, som sikrer kompatibilitet med applikationer designet til at arbejde med Oracle-databaser. IvorySQLs nye funktion gør det muligt at fungere som en gennemsigtig erstatning for den nyeste version af PostgreSQL, hvor forskellen består i indstillingen "compatible_db", som aktiverer kompatibilitetsmodus med Oracle. Koden er skrevet i C og distribueres under Apache 2.0-licensen.
IvorySQL implementerer det procedurale sprog PL/iSQL, som efterligner syntaksen fra PL/SQL i Oracle, understøtter pakker i Oracle-stil og operationer med pakker såsom "CREATE PACKAGE". Der tilbydes et Oracle-kompatibelt sæt funktioner og typer, og der understøttes specifikke Oracle-syntakser for operationer, udtryk og operatorer såsom ALTER TABLE, DELETE, UPDATE, CONNECT BY (hierarkiske forespørgsler), GROUP BY, UNION og MINUS.
I den nye version:
- Overgangen til PostgreSQL 18-kodebasen er gennemført.
- Kompatibiliteten med Oracle-databaser er forbedret: understøttelse af indlejrede procedurer, ROWID, NLS- og OUT-parametre, oversættelse af tomme strenge til NULL, skift af parser i forbindelse med sessioner, GB18030-kodning, samt funktionerne SYS_GUID, SYS_CONTEXT og USERENV er implementeret.
- Oracle-kompatible operatorer INSTR, FORCE VIEW og LIKE er blevet tilføjet.
- Mulighederne for PL/iSQL er udvidet: understøttelse af CALL-syntaks, %ROWTYPE og %TYPE er tilføjet.
- Der er opnået fuld støtte til Docker Compose, Docker Swarm og Kubernetes med pakkehåndteringssystemet Helm. IvorySQL Operator 5.0 og IvorySQL Cloud 5.0 inkluderer værktøjer til visuel styring af livscyklussen.
- Støtte til ti udvidelser til PostgreSQL er sikret: pg_cron, pgAudit, PostGIS, pgRouting, PGroonga, ddlx, pgsql-http, system_stats, plpgsql_check og pgvector.
- Installationspakker til arkitekturerne X86_64, ARM64, MIPS og LoongArch er blevet oprettet.
- Et online-miljø til arbejde med IvorySQL fra browseren er blevet forberedt, hvilket gør det muligt at undgå installationen af IvorySQL på ens system.
Derudover kan man nævne udgivelsen af udvidelsen SynchDB 1.3, som er designet til at replikere data fra en eller flere tredjeparts databaser, såsom MySQL, MS SQLServer og Oracle, til PostgreSQL. Disse eksterne databaser fungerer som datakilder, der overføres direkte til en enkelt måldatabase baseret på PostgreSQL, uden brug af ekstra lag til orkestrering af datasykroniseringsprocessen (alle synkroniseringsoperationer behandles af SynchDB-udvidelsen). Projektets kode er skrevet i C og Java, og distribueres under Apache 2.0-licensen.
Systemet inkluderer komponenter:
- Debezium Runner Engine — en Java-motor, der leverer moduler til behandling af datastreams fra forskellige DBMS'er (MySQL, MS SQLServer og Oracle) og oversætter de modtagne data til det universelle JSON-format.
- SynchDB Worker — starter instanser af Debezium Runner Engine til replikation af data fra specifikke DBMS'er, modtager ændringer i JSON-format fra dem og sender dem til modul Format Converter.
- SynchDB Launcher — opretter og afslutter arbejdet for SynchDB-behandlere ved at bruge PostgreSQL API til at starte baggrundsprocesser.
- Format Converter — analyserer ændringsstrømmen i JSON-format, konverterer eksterne datatyper og DDL-forespørgsler til typer og forespørgsler kompatible med PostgreSQL.
- Replication Agent — behandler output i HeapTupleData-format fra Format Converter og starter metoder til indføjelse af data i PostgreSQL.

I SynchDB 1.3 er der implementeret en ny snapshot-motor baseret på FDW (Foreign Data Wrapper), som understøtter arbejde med OpenLog Replicator. Sammenlignet med den gamle motor baseret på Debezium gør den nye motor det muligt at hæve ydeevnen betydeligt og reducere forsinkelser ved replikering af data fra store Oracle-databaser. Derudover tilbyder den nye version ekstra visninger med statistik (synchdb_genstats, synchdb_snapstats og synchdb_cdcstat), OpenLog Replicator har fået support for MODIFY og DEFAULT ON NULL udtryk, samt support for databasesystemerne PostgreSQL 18 og IvorySQL 5.
Kilde: opennet.ru
