Rozdíly mezi Firebird a InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Historický přehled
InterBase byl vytvořen v roce 1985: jednalo se o první komerční databázi s víceverzovým řízením. Na konci roku 1999 se Borland rozhodl ukončit vývoj InterBase a publikoval jeho zdrojové kódy pod licencí InterBase Public License. Tento kód byl zkopírován (což licence umožňuje) a zrodil se Firebird – od verze 1.0 je Firebird databází připravenou pro produkční nasazení, založenou na předchozích desetiletích vývoje InterBase.
Na konci roku 2000 se Borland vrátil k uzavřenému zdrojovému kódu a komerčním licencím (přesně jako dříve) u InterBase a zahájil vývoj verze 6.5.
Firebird 1.0 byl vydán v roce 2002 s mnoha opravami chyb a rozšířeními DDL a DML. Aktivní vývoj Firebird pokračoval i po verzi 1.0 a v roce 2004 byla vydána druhá hlavní verze Firebird (v.1.5). Borland v té době také představil nové verze (7.0 a 7.1). Firebird 1.5 a InterBase 7.0 byly vzájemně nekompatibilní jak formátem databáze (ODS), tak základní funkčností. Migrace z InterBase na Firebird a zpět pomocí zálohování/obnovy je od Firebird 2.0 a InterBase 7.0 nemožná.
Od té doby se rozdíl mezi Firebird a InterBase zvětšoval.
Současná situace (2017)
Jediným způsobem migrace mezi současnými verzemi InterBase a Firebird je prostřednictvím SQL skriptu (s ručním opravením rozdílů) a následným přenesením dat ze staré databáze do nové. Migrace z InterBase na Firebird je však stále snazší než na jiný DBMS, protože principy správy transakcí jsou stejné.
Provedli jsme několik takových migrací pro různé verze InterBase a Firebird – viz podrobnosti o naší migrační službě zde – a proběhly dobře.
Níže naleznete tabulku se seznamem rozdílů mezi nejnovějšími verzemi: Firebird 3.0 a InterBase 2017.
| Rozdíly mezi Firebird a InterBase |
|---|
| Funkce |
| — |
| SQL (DML a DDL) |
| Stabilita kurzoru (správné INSERT FROM SELECT) |
| Posuvné (obousměrné) kurzory |
| Execute Statement |
| Execute Statement On External (dotazy na externí databáze Firebird) |
| Autonomní transakce |
| Odvozené tabulky (SELECT z SELECT) |
| Rekurzivní Common Table Expressions (CTE) |
| Okenní a statistické funkce |
| MERGE |
| Klauzule RETURNING pro insert/update/delete |
| Triggery při connect/disconnect |
| Triggery při start/commit/rollback transakcí |
| Triggery pro DDL |
| Podpora Regexp pro SUBSTRING |
| Datový typ Boolean |
| Datový typ BIGINT |
| PSQL funkce |
| Externí procedury, funkce, triggery ( Java) |
| Vnořené procedury a funkce |
| Deterministické funkce |
| Kontextové proměnné v jmenných prostorech SYSTEM, USER_SESSION a USER_TRANSACTION |
| Balíčky (procedury a funkce) |
| Výjimky s parametry |
| Sloupec IDENTITY |
| RECREATE (kombinace CREATE nebo ALTER) |
| Podpora UTF8 |
| Podpora vyhledávání bez rozlišení velikosti písmen v Unicode |
| Délka identifikátoru |
| COMPUTED BY indexy (na výraz) |
| Architektura/Administrace |
| SMP SuperServer (podpora více jader) |
| Classic (instance na připojení) |
| SuperClassic |
| Více instancí (na různých portech) |
| Aliasy databází |
| Přesměrování mezi instancemi serveru |
| Write-ahead log (WAL) |
| Point-in-time-recovery |
| Paralelní vytváření indexů během obnovy |
| Inkrementální zálohování |
| Systémové monitorovací tabulky |
| 64bitový klient a server |
| Embedded verze |
| Embedded pro Android (mobilní) |
| Embedded pro iOS (mobilní) |
| ChangeViews ( co to je?) |
| Komprese přenosu |
| Vylepšení síťového protokolu pro sítě s vysokou latencí (pro SQL dotazy přes internet) |
| Replikace na úrovni serveru (nativní) |
| Trace a audit |
| Online validace databáze |
| Zabezpečení |
| Bezpečnostní databáze |
| Uživatelé v databázi |
| Šifrování databáze |
| Šifrování sloupců |
| Více šifrovacích klíčů |
| Šifrování přenosu |
| Uživatelská práva k DDL |
| Správa uživatelů přes SQL |
| UDF a vestavěné funkce |
| User Defined Functions |
| SDF aka Server Defined Functions (rychlejší než UDF) |
| Podpora ovladačů a klientských knihoven |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Licencování/Ceny |
| Cena za server (neomezené připojení) |
| Komunitní podpora |
| Profesionální podpora, za server |
| Nástroje pro obnovu, monitorování, trace/audit, optimalizaci, nativní replikaci |
Kontaktujte nás
Máte nějaké otázky? Neváhejte nás kontaktovat e-mailem!