Różnice między Firebird a InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Przegląd historyczny
InterBase został stworzony w 1985 roku: był to pierwszy komercyjny system baz danych z wielowersyjnością. Pod koniec 1999 roku Borland zdecydował się zamknąć rozwój InterBase i opublikował jego kody źródłowe na licencji InterBase Public License. Ten kod został skopiowany (co jest dozwolone przez licencję) i narodził się Firebird - od wersji 1.0 Firebird jest bazą danych gotową do produkcji, opartą na dziesięcioleciach rozwoju InterBase.
Na koniec 2000 roku Borland powrócił do zamkniętego źródła i licencji komercyjnych (dokładnie tak jak wcześniej) z InterBase i rozpoczął rozwój wersji 6.5.
Firebird 1.0 został wydany w 2002 roku, z wieloma poprawkami błędów i rozszerzeniami DDL i DML. Aktywny rozwój Firebirda kontynuowano po wersji 1.0, a w 2004 roku wydano drugą główną wersję Firebirda (v.1.5). Borland w tym czasie również wprowadził nowe wersje (7.0 i 7.1). Firebird 1.5 i InterBase 7.0 były niekompatybilne zarówno pod względem formatu bazy danych (ODS), jak i podstawowej funkcjonalności. Migracja z InterBase do Firebirda i z powrotem za pomocą kopii zapasowej/przywrócenia jest niemożliwa od Firebirda 2.0 i InterBase 7.0.
Od tego czasu różnica między Firebirdem a InterBase stała się większa.
Obecna sytuacja (2017)
Jedynym sposobem migracji między obecnymi wersjami InterBase i Firebirda jest skrypt SQL (z ręcznym poprawianiem różnic), a następnie przepompowanie danych ze starej bazy do nowej. Jednak migracja z InterBase do Firebirda jest nadal łatwiejsza niż do innego systemu DBMS, ponieważ zasady zarządzania transakcjami są takie same.
Wykonaliśmy kilka takich migracji dla różnych wersji InterBase i Firebirda - zobacz więcej szczegółów o naszej usłudze migracji tutaj - i przebiegły pomyślnie.
Poniżej znajduje się tabela z listą różnic między najnowszymi wersjami: Firebird 3.0 i InterBase 2017.
| Różnice między Firebirdem a InterBase |
|---|
| Funkcje |
| — |
| SQL (DML i DDL) |
| Stabilność kursora (poprawne INSERT FROM SELECT) |
| Przewijalne (dwukierunkowe) kursory |
| Execute Statement |
| Execute Statement On External (zapytania do zewnętrznych baz Firebird) |
| Transakcje autonomiczne |
| Tabele pochodne (SELECT z SELECT) |
| Rekurencyjne wyrażenia tabelaryczne (CTE) |
| Funkcje okienkowe i statystyczne |
| MERGE |
| Klauzula RETURNING dla insert/update/delete |
| Wyzwalacze przy połączeniu/rozłączeniu |
| Wyzwalacze przy rozpoczęciu/zatwierdzeniu/wycofaniu transakcji |
| Wyzwalacze dla DDL |
| Wsparcie Regexp dla SUBSTRING |
| Typ danych Boolean |
| Typ danych BIGINT |
| Funkcje PSQL |
| Procedury zewnętrzne, funkcje, wyzwalacze ( Java) |
| Zagnieżdżone procedury i funkcje |
| Funkcje deterministyczne |
| Zmienne kontekstowe w przestrzeniach nazw SYSTEM, USER_SESSION i USER_TRANSACTION |
| Pakiety (procedury i funkcje) |
| Wyjątki z parametrami |
| Kolumna IDENTITY |
| RECREATE (połączenie CREATE lub ALTER) |
| Wsparcie UTF8 |
| Wsparcie wyszukiwania bez rozróżniania wielkości liter Unicode |
| Długość identyfikatora |
| Indeksy COMPUTED BY (na wyrażeniach) |
| Architektura/Administracja |
| SMP SuperServer (wsparcie wielordzeniowe) |
| Classic (instancja na połączenie) |
| SuperClassic |
| Wiele instancji (na różnych portach) |
| Aliasy baz danych |
| Przekierowanie między instancjami serwera |
| Dziennik zapisu z wyprzedzeniem (WAL) |
| Odzyskiwanie do punktu w czasie |
| Równoległe tworzenie indeksów podczas przywracania |
| Przyrostowa kopia zapasowa |
| Systemowe tabele monitorowania |
| Klient i serwer 64-bitowy |
| Wersja osadzona |
| Osadzona dla Androida (mobile) |
| Osadzona dla iOS (mobile) |
| ChangeViews ( co to jest?) |
| Kompresja transmisji |
| Ulepszenia protokołu sieciowego dla sieci o wysokim opóźnieniu (dla zapytań SQL przez internet) |
| Replikacja na poziomie serwera (natywna) |
| Śledzenie i audyt |
| Walidacja bazy danych online |
| Bezpieczeństwo |
| Baza danych zabezpieczeń |
| Użytkownicy w bazie danych |
| Szyfrowanie bazy danych |
| Szyfrowanie kolumn |
| Wiele kluczy szyfrowania |
| Szyfrowanie transmisji |
| Prawa użytkowników DDL |
| Zarządzanie użytkownikami przez SQL |
| UDF i wbudowane funkcje |
| Funkcje zdefiniowane przez użytkownika |
| SDF aka funkcje zdefiniowane przez serwer (szybsze niż UDF) |
| Sterowniki i biblioteki klienckie |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Licencjonowanie/Ceny |
| Cena za serwer (nieograniczone połączenia) |
| Wsparcie społeczności |
| Profesjonalne wsparcie, za serwer |
| Narzędzia do odzyskiwania, monitorowania, śledzenia/audytu, optymalizacji, natywnej replikacji |
Skontaktuj się z nami
Masz pytania? Nie wahaj się skontaktować z nami przez e-mail!