Differenze tra Firebird e InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Panoramica storica
InterBase è stato creato nel 1985: è stato il primo database commerciale con multi-versioning. Alla fine del 1999, Borland decise di chiudere lo sviluppo di InterBase e pubblicò i suoi codici sorgente sotto la licenza pubblica InterBase. Questo codice fu copiato (è permesso dalla licenza), e nacque Firebird - dalla versione 1.0 Firebird è un database pronto per la produzione, basato su decenni di sviluppo precedente di InterBase.
Alla fine del 2000, Borland tornò al codice chiuso e alle licenze commerciali (esattamente come prima) con InterBase e iniziò lo sviluppo della versione 6.5.
Firebird 1.0 fu rilasciato nel 2002, con molte correzioni di bug ed estensioni di DDL e DML. Lo sviluppo attivo di Firebird continuò dopo la 1.0, e nel 2004 fu rilasciata la seconda versione principale di Firebird (v.1.5). Borland in quel periodo introdusse anche nuove versioni (7.0 e 7.1). Firebird 1.5 e InterBase 7.0 erano incompatibili sia per formato del database (ODS) che per funzionalità di base. La migrazione da InterBase a Firebird e viceversa con backup/restore è impossibile da Firebird 2.0 e InterBase 7.0.
Da allora, la differenza tra Firebird e InterBase è diventata più grande.
Situazione attuale (2017)
L’unico modo per migrare tra le versioni attuali di InterBase e Firebird è tramite script SQL (con la correzione manuale delle differenze) e poi il trasferimento dei dati dal vecchio database al nuovo. Tuttavia, la migrazione da InterBase a Firebird è ancora più facile che verso un altro DBMS, poiché i principi di gestione delle transazioni sono gli stessi.
Abbiamo eseguito diverse migrazioni di questo tipo per varie versioni di InterBase e Firebird - vedi maggiori dettagli sul nostro servizio di migrazione qui - e sono andate bene.
Di seguito puoi trovare la tabella con l’elenco delle differenze tra le ultime versioni: Firebird 3.0 e InterBase 2017.
| Differenze tra Firebird e InterBase |
|---|
| Caratteristiche |
| — |
| SQL (DML e DDL) |
| Stabilità del cursore (INSERT FROM SELECT corretto) |
| Cursori scorrevoli (bidirezionali) |
| Execute Statement |
| Execute Statement On External (query a database Firebird esterni) |
| Transazioni autonome |
| Tabelle derivate (SELECT da SELECT) |
| Common Table Expressions ricorsive (CTE) |
| Funzioni finestra e statistiche |
| MERGE |
| Clausola RETURNING per insert/update/delete |
| Trigger su connect/disconnect |
| Trigger su inizio/commit/rollback di transazioni |
| Trigger per DDL |
| Supporto Regexp per SUBSTRING |
| Tipo di dato Boolean |
| Tipo di dato BIGINT |
| Funzioni PSQL |
| Procedure, funzioni, trigger esterni ( Java) |
| Procedure e funzioni annidate |
| Funzioni deterministiche |
| Variabili di contesto nei namespace SYSTEM, USER_SESSION e USER_TRANSACTION |
| Package (procedure e funzioni) |
| Eccezioni con parametri |
| Colonna IDENTITY |
| RECREATE (combinazione di CREATE o ALTER) |
| Supporto UTF8 |
| Supporto ricerca Unicode senza distinzione maiuscole/minuscole |
| Lunghezza identificatori |
| Indici COMPUTED BY (su espressione) |
| Architettura/Amministrazione |
| SMP SuperServer (supporto multi-core) |
| Classic (istanza per connessione) |
| SuperClassic |
| Istanza multiple (su porte diverse) |
| Alias di database |
| Re-routing tra istanze server |
| Write-ahead log (WAL) |
| Point-in-time-recovery |
| Creazione parallela di indici durante il restore |
| Backup incrementale |
| Tabelle di monitoraggio di sistema |
| Client e server a 64-bit |
| Versione embedded |
| Embedded per Android (mobile) |
| Embedded per iOS (mobile) |
| ChangeViews ( cos’è?) |
| Compressione wire |
| Miglioramenti del protocollo di rete per reti ad alta latenza (per query SQL via internet) |
| Replica a livello server (nativa) |
| Trace e audit |
| Validazione online del database |
| Sicurezza |
| Database di sicurezza |
| Utenti nel database |
| Crittografia del database |
| Crittografia delle colonne |
| Chiavi di crittografia multiple |
| Crittografia wire |
| Diritti utente DDL |
| Gestione utenti tramite SQL |
| UDF e funzioni integrate |
| User Defined Functions |
| SDF aka Server Defined Functions (più veloci delle UDF) |
| Supporto driver e librerie client |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Licenze/Prezzi |
| Prezzo per server (connessioni illimitate) |
| Supporto comunitario |
| Supporto professionale, per server |
| Strumenti di recovery, monitoraggio, trace/audit, ottimizzazione, replica nativa |
Contattaci
Hai domande? Non esitare a contattarci via email!