Эта страница переведена машинным переводом. Читайте английский оригинал. English

Библиотека IBSurgeon

Различия между 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.

FirebirdSQLFirebird 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
Лицензирование/Цены
Цена за сервер (без ограничения подключений)
Поддержка сообщества
Профессиональная поддержка, за сервер
Инструменты восстановления, мониторинга, трассировки/аудита, оптимизации, нативной репликации

Свяжитесь с нами

У вас есть вопросы? Не стесняйтесь связаться с нами по электронной почте!