Различия между Firebird и InterBase

(c) kdv, AK, www.ibase.ru, 22.04.2017-28.05.2017

В последнее время часто возникает вопрос о различиях между InterBase и Firebird. Люди, которые работают с Firebird, почти ничего не знают об InterBase, разве что Firebird - наследник InterBase. Работающие с InterBase, аналогично, имеют поверхностное представление о Firebird.
Мы решили сделать таблицу основных отличий.
Однако, перед этим нужно дать небольшую историческую справку.
InterBase был создан в 1985 году, и является первой коммерческой версионной СУБД. В начале 2000 года компания Borland захотела свернуть разработку InterBase, и открыла исходные тексты. Они были скопированы, и так появился Firebird.
К концу 2000 года Borland возобновила выпуск InterBase (версия 6.0), вернув проект в состояние коммерческого, с закрытым кодом. Firebird выпустил релиз 1.0 только в 2002 году, кроме исправления ошибок уже содержал дополнения DDL и SQL. Активная разработка Firebird началась после выхода 1.0, и к 2004 году вышел Firebird 1.5. InterBase к этому времени тоже выпустил новую версию (7.0 и 7.1), которая отличалась как по функциональности, так и по формату БД. С тех пор проекты сильно разошлись, вы увидите это в описании отличий.
Подробнее по истории можно почитать здесь и здесь.

Переход с InterBase на Firebird или обратно при помощи backup/restore невозможен начиная с Firebird 2.0 и InterBase 7.0. Переход с одной СУБД на другую возможен при помощи скрипта DDL и переноса данных (в общих чертах описано здесь), однако с учетом того, что в Firebird существенно больше изменений и нововведений в SQL (в т.ч. контроля некорректного SQL, исправлений оптимизатора и прочее), перевод БД с InterBase на Firebird куда более вероятен, чем в обратную сторону.
Компания iBase.ru производит оценку и помощь в миграции как между Firebird и InterBase, так и со старых версий одной и той же СУБД на более новые (например, с Firebird 1.5 на 3.0).

Для сравнения взяты самые последние версии - InterBase XE7 и Firebird 3.0.
 
Функциональность Firebird InterBase
SQL (DML и DDL)
стабильность курсора (insert into select from и подобное) есть, начиная с 3.0 нет
Двунаправленные курсоры в PSQL есть нет
Execute Statement есть есть, с XE7
Execute Statement on external есть нет
Автономные транзакции есть нет
derived tables есть есть, с 2007, ограниченно
CTE есть нет
оконные и статистические функции есть, начиная с 3.0 нет
MERGE есть нет
RETURNING для insert/update/delete есть нет
Триггеры на коннект-дисконнект есть нет
триггеры на start/commit/rollback транзакций есть нет
триггеры DDL есть, начиная с 3.0 нет
FIRST/SKIP есть нет
поддержка regexp в SUBSTRING есть нет
тип данных boolean есть, начиная с 3.0 есть
тип данных bigint есть нет, есть внутренний int64 для NUMERIC(18,0)
функции PSQL (UDR) есть, начиная с 3.0 нет
внешние процедуры, функции, триггеры есть, начиная с 3.0 нет
подпрограммы и подфункции есть, начиная с 3.0 нет
детерминистические функции есть, начиная с 3.0 нет
Контекстные переменные системы, пользователя и транзакции есть нет
пакеты процедур и функций есть, начиная с 3.0 нет
исключения с параметрами есть, начиная с 3.0 нет
двунаправленные курсоры в PSQL есть, начиная с 3.0 нет
столбец IDENTITY есть, начиная с 3.0 нет
recreate (комбинация create or alter) есть нет
индексы по выражениям есть нет
поддержка UTF8 есть, id 4 есть, id 59
поддержка регистронечувствительного поиска есть (соответствующий collate)  
длина идентификаторов 28 символов 67 символов
Архитектура и администрирование
SuperServer, распараллеливаемый по ядрам есть, начиная с 3.0 есть, начиная с 7.0
Classic есть нет, прекращено с 6.0
SuperClassic есть, переходная архитектура, в 3.0 не нужна нет
multi-instances (на разных портах) да да
алиасы БД есть, начиная с 1.5 aliases.conf, databases.conf с 3.0 есть, через gsec alias_add
ре-роутинг между инстансами сервера нет есть, таблица db_route в admin.ib
Журналирование (WAL) и архив журналов нет есть
Инкрементный бэкап nbackup, с 2.1, создание инкрементных файлов gbak -d, с 2007, накат изменений на копию БД
Временные системные таблицы мониторинга mon$, с 2.1 tmp$, с 7.5
64бит клиент и сервер есть есть
Embedded есть, fbembed.dll, с 1.5 есть, ToGo, с 2009
Embedded для iOs (мобильных) бета-версия есть, IBLite, IBToGo
Embedded для Android альфа-версия есть, IBLite, IBToGo
ChangeViews, отслеживание изменений нет есть, начиная с XE7
Сжатие данных по сети есть нет
Оптимизация сетевого протокола для медленных сетей есть нет
Репликация уровня сервера, синхронная, асинхронная есть (HQBird - для 2.5 и 3.0, и Firebird 4.0 beta 1) нет
Трассировка и аудит есть нет
Онлайн-валидация БД есть нет
Параллельное создание индексов при restore нет есть
Включение-выключение резервирования места на страницах данных (для версий и новых записей) есть, для БД целиком есть, для каждой таблицы отдельно
Direct IO при работе с БД есть, для всех БД на сервере есть, для каждой БД отдельно
Безопасность
база безопасности security*.fdb admin.ib, начиная с 7.0
Пользователи в БД есть, начиная с 3.0 есть, начиная с 7.5 (EUA)
шифрование БД есть, начиная с 3.0 (плагины) есть, начиная с 2009
шифрование столбцов нет есть, начиная с 2009
шифрование соединения есть, начиная с 3.0 есть
права пользователей на DDL есть, начиная с 3.0 нет
управление пользователями в SQL есть, начиная с 2.5 есть
UDF и функции    
пользовательские функции (udf) есть, ib_udf, fbudf есть, ib_udf
дополнительные встроенные функции есть нет
Драйверы и клиентские библиотеки
Компоненты прямого доступа - IBX, FIBPlus, FireDAC, DBX есть есть
Java есть, Jaybird есть, InterClient, в дистрибутиве
.Net есть, Firebird .Net есть, DBX ADO.net
PHP есть есть
Python есть (FDB) нет, FDB частично совместим
ODBC есть, Firebird ODBC есть, InterBase ODBC
Node.JS/TypeScript есть, драйвер JS, C++ драйвер, еще нет
Golang есть нет
Yii2 есть нет
Ruby есть нет
Perl есть есть
Erlang есть нет
QT есть есть
Лицензирование/цена
Стоимость за сервер с неограниченным числом клиентов бесплатно $7030
Поддержка сообщества бесплатно бесплатно
Профессиональная поддержка есть есть
     

Дополнение: таблица отличий содержимого RDB$TYPES Firebird 2.5 и InterBase XE
 

Подпишитесь на новости Firebird в России

Подписаться