Verschillen tussen Firebird en InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Historisch overzicht
InterBase werd gecreëerd in 1985: het was de eerste commerciële database met multi-versiebeheer. Eind 1999 besloot Borland de ontwikkeling van InterBase te stoppen en publiceerde de broncode onder de InterBase Public License. Deze code werd gekopieerd (dit is toegestaan door de licentie), en Firebird was geboren - vanaf versie 1.0 is Firebird een productieklare database, gebaseerd op tientallen jaren van InterBase-ontwikkeling.
Eind 2000 keerde Borland terug naar closed source en commerciële licenties (precies zoals eerder) met InterBase en startte de ontwikkeling van 6.5.
Firebird 1.0 werd uitgebracht in 2002, met veel bugfixes en uitbreidingen van DDL en DML. De actieve Firebird-ontwikkeling ging door na 1.0, en in 2004 werd de tweede grote versie van Firebird (v.1.5) uitgebracht. Borland introduceerde destijds ook nieuwe versies (7.0 en 7.1). Firebird 1.5 en InterBase 7.0 waren incompatibel, zowel qua databaseformaat (ODS) als qua kernfunctionaliteit. Migratie van InterBase naar Firebird en terug met backup/restore is onmogelijk sinds Firebird 2.0 en InterBase 7.0.
Sindsdien is het verschil tussen Firebird en InterBase groter geworden.
Huidige situatie (2017)
De enige manier voor migratie tussen huidige versies van InterBase en Firebird is via SQL-script (met handmatige correctie van verschillen) en vervolgens het overzetten van gegevens van de oude database naar de nieuwe. De migratie van InterBase naar Firebird is echter nog steeds eenvoudiger dan naar een ander DBMS, omdat de principes van transactiebeheer hetzelfde zijn.
We hebben verschillende van dergelijke migraties uitgevoerd voor diverse versies van InterBase en Firebird - zie meer details over onze migratieservice hier - en ze zijn goed verlopen.
Hieronder vindt u de tabel met de lijst van verschillen tussen de nieuwste versies: Firebird 3.0 en InterBase 2017.
| Verschillen tussen Firebird en InterBase |
|---|
| Functies |
| — |
| SQL (DML en DDL) |
| Cursorstabiliteit (correcte INSERT FROM SELECT) |
| Scrollbare (bidirectionele) cursors |
| Execute Statement |
| Execute Statement On External (query’s naar externe Firebird-databases) |
| Autonome transacties |
| Afgeleide tabellen (SELECT van SELECT) |
| Recursieve Common Table Expressions (CTE) |
| Venster- en statistische functies |
| MERGE |
| RETURNING-clausule voor insert/update/delete |
| Triggers bij connect/disconnect |
| Triggers bij transactiestart/commit/rollback |
| Triggers voor DDL |
| Regexp-ondersteuning voor SUBSTRING |
| Boolean-datatype |
| BIGINT-datatype |
| PSQL-functies |
| Externe procedures, functies, triggers ( Java) |
| Geneste procedures en functies |
| Deterministische functies |
| Contextvariabelen in namespaces SYSTEM, USER_SESSION en USER_TRANSACTION |
| Packages (procedures en functies) |
| Uitzonderingen met parameters |
| IDENTITY-kolom |
| RECREATE (combinatie van CREATE of ALTER) |
| UTF8-ondersteuning |
| Unicode-hoofdletterongevoelige zoekondersteuning |
| Identifierlengte |
| COMPUTED BY-indexen (op expressie) |
| Architectuur/Beheer |
| SMP SuperServer (multi-core-ondersteuning) |
| Classic (instantie per verbinding) |
| SuperClassic |
| Meerdere instanties (op verschillende poorten) |
| Database-aliassen |
| Herroutering tussen serverinstanties |
| Write-ahead log (WAL) |
| Point-in-time-herstel |
| Parallelle indexcreatie tijdens restore |
| Incrementele backup |
| Systeembewakingstabellen |
| 64-bit client en server |
| Embedded versie |
| Embedded voor Android (mobiel) |
| Embedded voor iOS (mobiel) |
| ChangeViews ( wat is het?) |
| Draadcompressie |
| Netwerkprotocolverbeteringen voor netwerken met hoge latentie (voor SQL-query’s via internet) |
| Replicatie op serverniveau (native) |
| Trace en audit |
| Online databasevalidatie |
| Beveiliging |
| Beveiligingsdatabase |
| Gebruikers in de database |
| Database-encryptie |
| Kolom-encryptie |
| Meerdere encryptiesleutels |
| Draad-encryptie |
| DDL-gebruikersrechten |
| Gebruikers beheren via SQL |
| UDF en ingebouwde functies |
| User Defined Functions |
| SDF aka Server Defined Functions (sneller dan UDF) |
| Stuurprogramma- en clientbibliotheekondersteuning |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Licenties/Prijzen |
| Prijs per server (onbeperkte verbindingen) |
| Community-ondersteuning |
| Professionele ondersteuning, per server |
| Herstel, monitoring, trace/audit, optimalisatie, native replicatietools |
Neem contact met ons op
Heeft u vragen? Aarzel niet om contact met ons op te nemen via e-mail!