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: byla to první komerční databáze s multi-versioning. Na konci roku 1999 se Borland rozhodl ukončit vývoj InterBase a zveřejnil jeho zdrojové kódy pod licencí InterBase Public License. Tento kód byl zkopírován (což licence umožňuje) a vznikla databáze Firebird - od verze 1.0 je Firebird produkčně připravená databáze, založená 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) s 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 Firebirdu pokračoval i po verzi 1.0 a v roce 2004 byla vydána druhá hlavní verze Firebirdu (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 nekompatibilní jak formátem databáze (ODS), tak základní funkčností. Migrace z InterBase na Firebird a zpět pomocí zálohy/obnovy není možná od Firebirdu 2.0 a InterBase 7.0.
Od té doby se rozdíl mezi Firebirdem a InterBase stále zvětšoval.
Současná situace (2017)
Jediný způsob migrace mezi aktuálními verzemi InterBase a Firebirdu je přes SQL skript (s ruční opravou rozdílů) a následným přenosem 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 Firebirdu - viz více podrobností o naší migrační službě zde - a proběhly bez problémů.
Níže naleznete tabulku se seznamem rozdílů mezi nejnovějšími verzemi: Firebird 3.0 a InterBase 2017.
| Rozdíly mezi Firebirdem a InterBase |
|---|
| Funkce |
| — |
| SQL (DML a DDL) |
| Stabilita kurzoru (správné INSERT FROM SELECT) |
| Posouvatelné (obousměrné) kurzory |
| Execute Statement |
| Execute Statement On External (dotazy do externích databází Firebird) |
| Autonomní transakce |
| Odvozené tabulky (SELECT ze SELECT) |
| Rekurzivní Common Table Expressions (CTE) |
| Okenní a statistické funkce |
| MERGE |
| Klauzule RETURNING pro insert/update/delete |
| Triggery na připojení/odpojení |
| Triggery na 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 ohledu na velikost písmen v Unicode |
| Délka identifikátoru |
| Indexy COMPUTED BY (na výrazu) |
| 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) |
| Obnova k určitému časovému okamžiku |
| Paralelní vytváření indexů během obnovy |
| Přírůstkové zálohování |
| Systémové monitorovací tabulky |
| 64bitový klient a server |
| Vestavěná verze |
| Vestavěná verze pro Android (mobil) |
| Vestavěná verze pro iOS (mobil) |
| ChangeViews ( co to je?) |
| Komprese přenosu (wire compression) |
| Vylepšení síťového protokolu pro sítě s vysokou latencí (pro SQL dotazy přes internet) |
| Replikace na úrovni serveru (nativní) |
| Sledování a audit |
| Online validace databáze |
| Bezpečnost |
| 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 (wire encryption) |
| Práva uživatelů pro DDL |
| Správa uživatelů přes SQL |
| UDF a vestavěné funkce |
| User Defined Functions |
| SDF neboli 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 |
| Licence/Ceny |
| Cena za server (neomezená připojení) |
| Komunitní podpora |
| Profesionální podpora, za server |
| Nástroje pro obnovu, monitorování, sledování/audit, optimalizaci, nativní replikaci |
Kontaktujte nás
Máte nějaké otázky? Neváhejte nás kontaktovat e-mailem!