La version 4.0 du projet IvorySQL a été publiée, développant l'édition de la base de données PostgreSQL, assurant la compatibilité avec les applications conçues pour fonctionner avec la base de données Oracle. IvorySQL offre la possibilité d'opérer en tant que remplacement transparent de la derniÚre version de PostgreSQL, dont la différence réside dans l'ajout d'un paramÚtre « compatible_db », incluant un mode de compatibilité avec Oracle. Le code est écrit en langage C et est distribué sous la licence Apache 2.0.
IvorySQL implĂ©mente le langage procĂ©dural PL/iSQL, rĂ©pĂ©tant la syntaxe PL/SQL d'Oracle, prend en charge les packages au style Oracle et les opĂ©rations sur les packages, telles que « CREATE PACKAGE ». Il fournit un ensemble de fonctions et de types compatibles avec Oracle, ainsi qu'une syntaxe spĂ©cifique Ă Oracle pour les opĂ©rations, expressions et opĂ©rateurs, tels que ALTER TABLE, DELETE, UPDATE, CONNECT BY (requĂȘtes hiĂ©rarchiques), GROUP BY, UNION et MINUS.
Dans la nouvelle version :
- La transition vers la base de code de PostgreSQL 17 a été effectuée.
- Ajout de la prise en charge des colonnes invisibles, permettant de dissimuler certaines colonnes pour faciliter la migration vers de nouvelles applications (les colonnes invisibles ne s'affichent que si leur nom est explicitement indiquĂ© et ne sont pas visibles dans les requĂȘtes gĂ©nĂ©rales du type « SELECT * FROM »).
- Ajout de fonctionnalités pour gérer les packages PL/SQL, permettant de créer des packages, de modifier leurs paramÚtres et d'ajouter une description. Dans psql, une nouvelle commande « \dk » a été ajoutée pour opérer sur les packages.
- Amélioration de la performance des opérations sur les packages PL/SQL et ajout de la prise en charge du cache de packages.
- De nouvelles fonctionnalités ACL ont été proposées pour gérer les privilÚges en lien avec les packages PL/SQL.
- Ajout de la prise en charge de l'extension pg_get_functiondef avec l'implémentation des fonctions pg_get_functiondef(), pg_get_functiondef(OID, VARIADIC OID[]) et pg_get_functiondef(VARIADIC TEXT[]), permettant d'obtenir les définitions des fonctions sur la base d'une liste spécifiée de noms de fonctions.
- Ajout de packages d'installation pour Ubuntu.
Il convient également de noter la sortie de l'extension SynchDB 1.0, conçue pour la réplication dans PostgreSQL des données provenant d'une ou plusieurs bases de données tierces, telles que MySQL, MS SQLServer et Oracle. Ces bases de données externes agissent comme des sources de données, qui sont directement transférées dans une seule base de données cible basée sur PostgreSQL, sans utiliser de couches supplémentaires pour orchestrer le processus de synchronisation des données (toutes les opérations de synchronisation sont traitées par l'extension SynchDB). Le code du projet est écrit en C et Java, et est distribué sous la licence Apache 2.0. SynchDB 1.0 a été marqué comme la premiÚre version stable du projet.
Le systĂšme comprend six composants :
- Debezium Runner Engine â moteur Java fournissant des modules pour le traitement des flux de modifications de donnĂ©es provenant de diverses bases de donnĂ©es (MySQL, MS SQLServer et Oracle) et pour la diffusion des donnĂ©es reçues au format JSON.
- SynchDB Worker â lance des instances de Debezium Runner Engine pour la rĂ©plication des donnĂ©es Ă partir de bases de donnĂ©es spĂ©cifiques, reçoit les modifications au format JSON et les transmet au module Format Converter.
- SynchDB Launcher â crĂ©e et termine le travail des gestionnaires SynchDB, utilisant l'API PostgreSQL pour dĂ©marrer des processus en arriĂšre-plan.
- Format Converter â analyse le flux de modifications au format JSON, convertit les types de donnĂ©es externes et les requĂȘtes DDL en types et requĂȘtes compatibles avec PostgreSQL.
- Replication Agent â traite la sortie au format HeapTupleData du Format Converter et dĂ©clenche des mĂ©thodes pour insĂ©rer des donnĂ©es dans PostgreSQL.
- Table Synch Agent (en dĂ©veloppement) â fournit un moyen efficace de synchronisation initiale des tables.

Source : opennet.ru
