Различия между Firebird и InterBase
(c) Дмитрий Кузьменко, Алексей Ковязин, IBSurgeon, 21.05.2017
Исторический обзор
InterBase была создана в 1985 году: это была первая коммерческая база данных с многоверсионностью. В конце 1999 года Borland решила закрыть разработку InterBase и опубликовала её исходные коды под лицензией InterBase Public License. Этот код был скопирован (это разрешено лицензией), и родился Firebird - начиная с версии 1.0 Firebird является готовой к производству базой данных, основанной на десятилетиях разработки InterBase.
В конце 2000 года Borland вернулась к закрытому исходному коду и коммерческим лицензиям (точно так же, как и раньше) с InterBase и начала разработку версии 6.5.
Firebird 1.0 был выпущен в 2002 году, с множеством исправлений ошибок и расширений DDL и DML. Активная разработка Firebird продолжалась и после 1.0, и в 2004 году была выпущена вторая крупная версия Firebird (v.1.5). Borland в то время также представила новые версии (7.0 и 7.1). Firebird 1.5 и InterBase 7.0 были несовместимы как по формату базы данных (ODS), так и по основной функциональности. Миграция с InterBase на Firebird и обратно с помощью резервного копирования/восстановления невозможна начиная с Firebird 2.0 и InterBase 7.0.
С тех пор разница между Firebird и InterBase стала ещё больше.
Текущая ситуация (2017)
Единственный способ миграции между текущими версиями InterBase и Firebird - через SQL-скрипт (с ручным исправлением различий), а затем перенос данных из старой базы данных в новую. Однако миграция с InterBase на Firebird всё ещё проще, чем на другую СУБД, поскольку принципы управления транзакциями одинаковы.
Мы выполнили несколько таких миграций для различных версий InterBase и Firebird - см. подробнее о нашей услуге миграции здесь - и они прошли успешно.
Ниже вы можете найти таблицу со списком различий между последними версиями: Firebird 3.0 и InterBase 2017.
| Различия между Firebird и InterBase |
|---|
| Возможности |
| — |
| SQL (DML и DDL) |
| Стабильность курсора (корректный INSERT FROM SELECT) |
| Прокручиваемые (двунаправленные) курсоры |
| Execute Statement |
| Execute Statement On External (запросы к внешним базам Firebird) |
| Автономные транзакции |
| Производные таблицы (SELECT из SELECT) |
| Рекурсивные общие табличные выражения (CTE) |
| Оконные и статистические функции |
| MERGE |
| Предложение RETURNING для insert/update/delete |
| Триггеры на подключение/отключение |
| Триггеры на начало/фиксацию/откат транзакций |
| Триггеры для DDL |
| Поддержка Regexp для SUBSTRING |
| Логический тип данных |
| Тип данных BIGINT |
| PSQL-функции |
| Внешние процедуры, функции, триггеры ( Java) |
| Вложенные процедуры и функции |
| Детерминированные функции |
| Контекстные переменные в пространствах имён SYSTEM, USER_SESSION и USER_TRANSACTION |
| Пакеты (процедуры и функции) |
| Исключения с параметрами |
| Столбец IDENTITY |
| RECREATE (комбинация CREATE или ALTER) |
| Поддержка UTF8 |
| Поддержка поиска без учёта регистра в Unicode |
| Длина идентификатора |
| Индексы COMPUTED BY (по выражению) |
| Архитектура/Администрирование |
| SMP SuperServer (поддержка многоядерности) |
| Classic (экземпляр на подключение) |
| SuperClassic |
| Несколько экземпляров (на разных портах) |
| Псевдонимы баз данных |
| Перенаправление между серверными экземплярами |
| Журнал упреждающей записи (WAL) |
| Восстановление на момент времени |
| Параллельное создание индексов при восстановлении |
| Инкрементальное резервное копирование |
| Системные таблицы мониторинга |
| 64-битный клиент и сервер |
| Встраиваемая версия |
| Встраиваемая версия для Android (мобильные) |
| Встраиваемая версия для iOS (мобильные) |
| ChangeViews ( что это?) |
| Сжатие провода |
| Улучшения сетевого протокола для сетей с высокой задержкой (для SQL-запросов через интернет) |
| Репликация на уровне сервера (нативная) |
| Трассировка и аудит |
| Онлайн-проверка базы данных |
| Безопасность |
| База данных безопасности |
| Пользователи в базе данных |
| Шифрование базы данных |
| Шифрование столбцов |
| Несколько ключей шифрования |
| Шифрование провода |
| Права пользователей на DDL |
| Управление пользователями через SQL |
| UDF и встроенные функции |
| Пользовательские функции (UDF) |
| SDF, также известные как серверные функции (быстрее, чем UDF) |
| Поддержка драйверов и клиентских библиотек |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Лицензирование/Цены |
| Цена за сервер (без ограничения подключений) |
| Поддержка сообщества |
| Профессиональная поддержка, за сервер |
| Инструменты восстановления, мониторинга, трассировки/аудита, оптимизации, нативной репликации |
Свяжитесь с нами
У вас есть вопросы? Не стесняйтесь связаться с нами по электронной почте!