(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
InterBase was created in 1985: it was the first commercial multi-versioning database. In the end of 1999, Borland decided to close InterBase development and published its source codes under InterBase Public License. This code was copied (it is permitted by the license), and Firebird was born – from the version 1.0 Firebird is a production-ready database, based on previous decades of InterBase development.
At the end of 2000, Borland turned back to the closed source and commercial licenses (exactly as it was earlier) with InterBase and started development of 6.5.
Firebird 1.0 was released in 2002, with many bugfixes and extensions of DDL and DML. The active Firebird development continued after 1.0, and in 2004 the second major version of Firebird (v.1.5) was released. Borland at that time also has introduced new versions (7.0 and 7.1). Firebird 1.5 and InterBase 7.0 was incompatible both by database format (ODS) and core functionality. The migration from InterBase to Firebird and back with backup/restore is impossible since Firebird 2.0 and InterBase 7.0.
Since then, the difference between Firebird and InterBase became bigger.
The only way for migration between current versions of InterBase and Firebird is through SQL script (with the manual fixing of differences) and then pumping of data from the old database to the new one. However, the migration from InterBase to Firebird is still easier than to another DBMS, since the transaction management principles are the same.
We did several such migrations for various versions of InterBase and Firebird – see more details about our migration service here - and they went fine.
Below you can find the table with the list of differences between the latest versions: Firebird 3.0 and InterBase 2017.
Differences between Firebird and InterBase | ||
---|---|---|
Features | Firebird | InterBase |
SQL (DML and DDL) | ||
Cursor stability (correct INSERT FROM SELECT) | Yes | No |
Scrollable (bi-directional) cursors | Yes | No |
Execute Statement | Yes | Yes |
Execute Statement On External (queries to external Firebird databases) | Yes | No |
Autonomous transactions | Yes | No |
Derived tables (SELECT from SELECT) | Yes | Yes (with limitations) |
Recursive Common Table Expressions (CTE) | Yes | No |
Windows and Statistical functions | Yes | No |
Yes | No | |
RETURNING clause for insert/update/delete | Yes | No |
Triggers on connect/disconnect | Yes | No |
Triggers on transactions start/commit/rollback | Yes | No |
Triggers for DDL | Yes | No |
Regexp support for SUBSTRING | Yes | No |
Boolean datatype | Yes | Yes |
BIGINT datatype | Yes | No (only internal int64 for NUMERIC(18,0)) |
PSQL functions | Yes | No |
External procedures, functions, triggers (Java) | Yes | No |
Nested procedures and functions | Yes | No |
Deterministic functions | Yes | No |
Context variables in namespaces SYSTEM, USER_SESSION and USER_TRANSACTION | Yes | No |
Packages (procedures and functions) | Yes | No |
Exceptions with parameters | Yes | No |
IDENTITY column | Yes | No |
RECREATE (combination of CREATE or ALTER) | Yes | No |
UTF8 support | Yes, id4 | Yes, id59 |
Unicode case-insensitive search support | Yes (corresponding COLLATE) | No |
Identifier length | 31 | 67 |
COMPUTED BY indices (on expression) | Yes | No |
Architecture/Administration | ||
SMP SuperServer (multi-core support) | Yes (since 3.0) | Yes (since 7.0) |
Classic (instance per connect) | Yes | No (closed in 6.0) |
SuperClassic | Yes | No |
Multiple instances (at different ports) | Yes | Yes |
Databases aliases | Yes (aliases.conf since 1.5, databases.conf since 3.0) | Yes (gsec alias_add) |
Re-routing between server instances | No | Yes (since IB2007) |
Write-ahead log (WAL) | No | Yes (since IB2007) |
Point-in-time-recovery | No | Yes |
Parallel index creation during restore | No (planned for 4.0) | Yes |
Incremental backup | Yes (nbackup) | Yes (online dump) |
System monitoring tables | Yes (MON$) | Yes (tmp$) |
64-bit client and server | Yes | Yes |
Embedded version | Yes | Yes |
Embedded for Android (mobile) | Yes (beta-version of Firebird for Android) | Yes |
Embedded for iOS (mobile) | No | Yes |
ChangeViews (what is it?) | No | Yes |
Wire compression | Yes | No |
Network protocol improvements for high-latency networks (for SQL queries through internet) | Yes | No |
Server-level replication (native) | Available in HQbird for Firebird 2.5 and 3.0, synchronous and asynchronous | No |
Trace and audit | Yes | No |
Online database validation | Yes | No |
Security | ||
Security database | security3.fdb | admin.ib |
Users in the database | Yes (since 3.0) | Yes (since 7.5) |
Database encryption | Yes (plugin, see FEPF) | Yes |
Column encryption | No | Yes |
Multiple encryption keys | No | Yes |
Wire encryption | Yes | Yes |
DDL user rights | Yes | No |
Manage users via SQL | Yes | Yes |
UDF and built-in functions | ||
User Defined Functions | Yes | Yes |
SDF aka Server Defined Functions (faster than UDF) | Yes | No |
Drivers and client libraries support | ||
Java | Yes (Jaybird) | Yes (InterClient) |
.NET | Yes (Firebird.NET, third-party drivers) | Yes (DBX ADO.NET, third-party drivers) |
PHP | Yes | Yes |
Python | Yes (FDB driver) | Yes (partially compatible with FDB driver) |
ODBC | Yes (download Firebird ODBC) | Yes (InterBase ODBC) |
Node.JS/TypeScript | Yes (pure JS driver, C++ driver, another native driver) | No |
Golang | Yes (download) | No |
Yii2 | Yes (download) | No |
Ruby | Yes (download) | No |
Perl | Yes (download DBD:Firebird) | Yes |
Erlang | Yes (download) | No |
QT | Yes (details) | Yes (details) |
Licensing/Prices | ||
Price per server (unlimited connections) | free | USD $7030 |
Community support | free (mailing lists) | free (there was a forum?) |
Professional support, per server | USD $990/year (with volume discounts) | USD $2109/year |
Recovery, monitoring, trace/audit, optimization, native replication tools | from USD $399/server | Partially available: recovery, optimization tools |