Différences entre Firebird et InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Aperçu historique
InterBase a été créé en 1985 : c’était la première base de données commerciale multi-versionnée. À la fin de 1999, Borland a décidé de fermer le développement d’InterBase et a publié ses codes sources sous la licence publique InterBase. Ce code a été copié (c’est permis par la licence), et Firebird est né - depuis la version 1.0, Firebird est une base de données prête pour la production, basée sur des décennies de développement d’InterBase.
À la fin de 2000, Borland est revenu aux licences fermées et commerciales (exactement comme auparavant) avec InterBase et a commencé le développement de la version 6.5.
Firebird 1.0 a été publié en 2002, avec de nombreuses corrections de bogues et des extensions de DDL et DML. Le développement actif de Firebird a continué après la version 1.0, et en 2004, la deuxième version majeure de Firebird (v.1.5) a été publiée. Borland a également introduit de nouvelles versions à cette époque (7.0 et 7.1). Firebird 1.5 et InterBase 7.0 étaient incompatibles tant au niveau du format de base de données (ODS) que des fonctionnalités de base. La migration d’InterBase vers Firebird et inversement avec sauvegarde/restauration est impossible depuis Firebird 2.0 et InterBase 7.0.
Depuis lors, la différence entre Firebird et InterBase est devenue plus grande.
Situation actuelle (2017)
La seule façon de migrer entre les versions actuelles d’InterBase et de Firebird est via un script SQL (avec correction manuelle des différences) puis le transfert des données de l’ancienne base vers la nouvelle. Cependant, la migration d’InterBase vers Firebird reste plus facile que vers un autre SGBD, car les principes de gestion des transactions sont les mêmes.
Nous avons effectué plusieurs de ces migrations pour diverses versions d’InterBase et de Firebird - voir plus de détails sur notre service de migration ici - et elles se sont bien déroulées.
Vous trouverez ci-dessous le tableau avec la liste des différences entre les dernières versions : Firebird 3.0 et InterBase 2017.
| Différences entre Firebird et InterBase |
|---|
| Fonctionnalités |
| — |
| SQL (DML et DDL) |
| Stabilité du curseur (INSERT FROM SELECT correct) |
| Curseurs défilants (bidirectionnels) |
| Execute Statement |
| Execute Statement On External (requêtes vers des bases Firebird externes) |
| Transactions autonomes |
| Tables dérivées (SELECT depuis SELECT) |
| Expressions de table communes récursives (CTE) |
| Fonctions de fenêtrage et statistiques |
| MERGE |
| Clause RETURNING pour insert/update/delete |
| Déclencheurs sur connexion/déconnexion |
| Déclencheurs sur début/validation/annulation de transactions |
| Déclencheurs pour DDL |
| Prise en charge Regexp pour SUBSTRING |
| Type de données Boolean |
| Type de données BIGINT |
| Fonctions PSQL |
| Procédures, fonctions, déclencheurs externes ( Java) |
| Procédures et fonctions imbriquées |
| Fonctions déterministes |
| Variables de contexte dans les espaces de noms SYSTEM, USER_SESSION et USER_TRANSACTION |
| Packages (procédures et fonctions) |
| Exceptions avec paramètres |
| Colonne IDENTITY |
| RECREATE (combinaison de CREATE ou ALTER) |
| Prise en charge UTF8 |
| Prise en charge de recherche insensible à la casse Unicode |
| Longueur des identifiants |
| Index COMPUTED BY (sur expression) |
| Architecture/Administration |
| SMP SuperServer (prise en charge multi-cœurs) |
| Classic (instance par connexion) |
| SuperClassic |
| Instances multiples (sur différents ports) |
| Alias de bases de données |
| Réacheminement entre instances de serveur |
| Journal d’écriture anticipée (WAL) |
| Récupération à un instant précis (point-in-time) |
| Création parallèle d’index lors de la restauration |
| Sauvegarde incrémentale |
| Tables de surveillance système |
| Client et serveur 64 bits |
| Version embarquée |
| Embarqué pour Android (mobile) |
| Embarqué pour iOS (mobile) |
| ChangeViews ( qu’est-ce que c’est ?) |
| Compression du fil (wire) |
| Améliorations du protocole réseau pour les réseaux à haute latence (pour les requêtes SQL via Internet) |
| Réplication au niveau serveur (native) |
| Trace et audit |
| Validation de base de données en ligne |
| Sécurité |
| Base de données de sécurité |
| Utilisateurs dans la base de données |
| Chiffrement de base de données |
| Chiffrement de colonnes |
| Clés de chiffrement multiples |
| Chiffrement du fil (wire) |
| Droits utilisateurs DDL |
| Gestion des utilisateurs via SQL |
| Fonctions UDF et intégrées |
| Fonctions définies par l’utilisateur |
| SDF aka fonctions définies par le serveur (plus rapides que UDF) |
| Prise en charge des pilotes et bibliothèques clientes |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Licences/Prix |
| Prix par serveur (connexions illimitées) |
| Support communautaire |
| Support professionnel, par serveur |
| Outils de récupération, surveillance, trace/audit, optimisation, réplication native |
Contactez-nous
Avez-vous des questions ? N’hésitez pas à nous contacter par email !