È stato pubblicato il rilascio del progetto IvorySQL 4.0, che sviluppa una versione del DBMS PostgreSQL per garantire compatibilità con le applicazioni progettate per funzionare con il DBMS Oracle. IvorySQL offre la possibilità di operare come una sostituzione trasparente dell'ultima versione di PostgreSQL, distinguendosi per la presenza dell'impostazione "compatible_db", che attiva la modalità di compatibilità con Oracle. Il codice è scritto in linguaggio C e distribuito con licenza Apache 2.0.
IvorySQL implementa il linguaggio procedurale PL/iSQL, che replica la sintassi di PL/SQL in Oracle, supporta i pacchetti in stile Oracle e operazioni sui pacchetti, come «CREATE PACKAGE». Viene fornito un insieme di funzioni e tipi compatibili con Oracle, e viene inoltre supportata la sintassi specifica di Oracle per operazioni, espressioni e operatori, come ALTER TABLE, DELETE, UPDATE, CONNECT BY (query gerarchiche), GROUP BY, UNION e MINUS.
Nella nuova versione:
- È stato completato il passaggio alla base di codice di PostgreSQL 17.
- È stato introdotto il supporto per colonne invisibili, che consentono di nascondere determinate colonne per semplificare la migrazione verso nuove applicazioni (le colonne invisibili vengono visualizzate solo se ne viene esplicitamente specificato il nome e non appaiono nelle query generali come "SELECT * FROM").
- Sono state aggiunte funzionalità per la gestione dei pacchetti PL/SQL, che consentono di creare pacchetti, modificare i loro parametri e allegare descrizioni. In psql è stato aggiunto un nuovo comando "\dk" per le operazioni sui pacchetti.
- È stata migliorata la performance nella gestione dei pacchetti PL/SQL e aggiunto il supporto per la memorizzazione nella cache dei pacchetti.
- Sono state proposte nuove funzioni ACL per la gestione delle autorizzazioni legate ai pacchetti PL/SQL.
- È stato aggiunto il supporto per l'estensione pg_get_functiondef, implementando le funzioni pg_get_functiondef(), pg_get_functiondef(OID, VARIADIC OID[]) e pg_get_functiondef(VARIADIC TEXT[]), che consentono di ottenere le definizioni delle funzioni basandosi su un elenco specificato di nomi di funzioni.
- Sono stati aggiunti i pacchetti di installazione per Ubuntu.
In aggiunta, si segnala il rilascio dell'estensione SynchDB 1.0, progettata per la replica dei dati da uno o più database esterni a PostgreSQL, come MySQL, MS SQLServer e Oracle. Questi database esterni fungono da fonti di dati, che vengono trasferiti direttamente in un'unica base di dati di destinazione basata su PostgreSQL, senza l'uso di ulteriori strati per orchestrare il processo di sincronizzazione dei dati (tutte le operazioni di sincronizzazione sono gestite dall'estensione SynchDB). Il codice del progetto è scritto in C e Java e viene distribuito sotto licenza Apache 2.0. SynchDB 1.0 è stato contrassegnato come il primo rilascio stabile del progetto.
Il sistema è composto da sei componenti:
- Debezium Runner Engine — un motore Java che fornisce moduli per l'elaborazione dei flussi di cambiamenti nei dati provenienti da vari DBMS (MySQL, MS SQLServer e Oracle) e per la traslazione dei dati ricevuti in un formato JSON universale.
- SynchDB Worker — avvia le istanze di Debezium Runner Engine per la replica dei dati da specifici DBMS, riceve le modifiche in formato JSON e le invia al modulo Format Converter.
- SynchDB Launcher — crea e termina i processori SynchDB utilizzando l'API di PostgreSQL per avviare processi in background.
- Format Converter — analizza il flusso di modifiche in formato JSON, converte i tipi di dati esterni e le richieste DDL in tipi e richieste compatibili con PostgreSQL.
- Replication Agent — elabora l'output in formato HeapTupleData dal Format Converter e avvia i metodi per l'inserimento dei dati in PostgreSQL.
- Table Synch Agent (in fase di sviluppo) - fornisce un metodo efficace per la sincronizzazione iniziale delle tabelle.

Fonte: opennet.ru
