AprÚs deux ans et demi de développement, la version 5.0 du systÚme de gestion de bases de données relationnelles Firebird est présentée. Firebird poursuit le développement du code de la base de données InterBase 6.0, ouvert en 2000 par Borland. Firebird est distribué sous la licence libre MPL et prend en charge les normes ANSI SQL, y compris des fonctionnalités telles que les déclencheurs, les procédures stockées et la réplication. Des versions binaires sont préparées pour Linux, Windows, macOS et Android.
Nouveautés clés :
- Il est désormais possible d'exécuter des opérations en mode multithreading. La parallélisation en plusieurs threads est applicable lors de la création d'index, de la collecte des objets inutiles (opérations automatiques et manuelles de sweep), de la création de sauvegardes et de leur restauration. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Ajout du support des index partiels, incluant uniquement les enregistrements sélectionnés qui répondent aux conditions spécifiées lors de la création de l'index. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- Dans les requĂȘtes SELECT WITH LOCK, UPDATE et DELETE, la syntaxe «SKIP LOCKED» a Ă©tĂ© implĂ©mentĂ©e, permettant d'exclure les enregistrements pour lesquels un verrou a Ă©tĂ© placĂ© au moment de l'envoi de la requĂȘte (par exemple, afin de ne pas attendre la libĂ©ration du verrou lors de l'intersection avec une autre transaction).
- Ajout de la possibilitĂ© de mettre Ă jour la base de donnĂ©es vers la derniĂšre version intermĂ©diaire du stockage (ODS â On-Disk-Structure) Ă la volĂ©e (mise Ă jour en ligne) sans crĂ©er et restaurer Ă partir d'une sauvegarde. Par exemple, il est dĂ©sormais possible de convertir Ă la volĂ©e une base de donnĂ©es au format Firebird 4.0 (ODS 13.0) au format Firebird 5.0 (ODS 13.1).
- Un cache d'expressions SQL compilées a été mis en place, géré automatiquement (les enregistrements obsolÚtes sont nettoyés selon les besoins). La taille du cache est définie par le paramÚtre MaxStatementCacheSize dans firebird.conf.
- Une interface pour le profilage SQL et PSQL a Ă©tĂ© ajoutĂ©e, permettant d'Ă©valuer le temps d'exĂ©cution de chaque requĂȘte, d'accumuler des statistiques sur le nombre de requĂȘtes et d'identifier les problĂšmes de performance.
- Dans l'instruction MERGE, le support du bloc conditionnel «WHEN NOT MATCHED BY SOURCE» a été ajouté, s'activant lorsque l'enregistrement source ne correspond à aucun enregistrement de l'ensemble cible. MERGE INTO customers c USING new_customers nc ON (c.id = nc.id) WHEN MATCHED THEN UPDATE SET name = nc.name WHEN NOT MATCHED BY SOURCE THEN DELETE
- Il est désormais possible de renvoyer plusieurs lignes avec l'expression RETURNING, si la DML donnée couvre plusieurs lignes (auparavant, dans de telles situations, une erreur «multiple rows in singleton select» était renvoyée).
- Ajout de nouvelles fonctions intégrées : UNICODE_CHAR pour retourner le caractÚre unicode correspondant à un code donné, et UNICODE_VAL pour retourner le code d'un caractÚre donné. Dans les fonctions EXTRACT, FIRST_DAY et LAST_DAY, un paramÚtre QUARTER a été ajouté pour déterminer le numéro du trimestre.
- Ajout d'un nouveau package systÚme RDB$BLOB_UTIL avec une collection d'opérations sur les BLOBs pour les modules PSQL.
- Amélioration de l'algorithme de compression des enregistrements, qui applique désormais un compteur à longueur variable pour un emballage plus efficace des séquences de données répétées. Cette optimisation a permis d'augmenter considérablement le taux de compression des champs VARCHAR longs non complÚtement remplis contenant des données en codage UTF-8.
- Ajout de la possibilité de travailler avec des curseurs bidirectionnels (scrollable) lors d'un accÚs réseau distant à la base de données.
- Optimisation de la performance de la copie des BLOBs.
- Ajout d'un support complet de la syntaxe de dĂ©finition des chaĂźnes dĂ©crite dans la norme SQL. Par exemple, les chaĂźnes peuvent maintenant ĂȘtre interrompues par des commentaires ou des espaces : select âabâ /* comment */ âcdâ from RDB$DATABASE; select âabâ âcdâ from RDB$DATABASE;
Source : opennet.ru
