Відмінності між 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 |
| Тригери на connect/disconnect |
| Тригери на початок/фіксацію/відкат транзакцій |
| Тригери для DDL |
| Підтримка Regexp для SUBSTRING |
| Тип даних Boolean |
| Тип даних 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 та вбудовані функції |
| Функції, визначені користувачем |
| SDF, також відомі як функції, визначені сервером (швидші за UDF) |
| Підтримка драйверів і клієнтських бібліотек |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Ліцензування/Ціни |
| Ціна за сервер (необмежені підключення) |
| Підтримка спільноти |
| Професійна підтримка, за сервер |
| Інструменти відновлення, моніторингу, трасування/аудиту, оптимізації, власної реплікації |
Зв’яжіться з нами
Маєте запитання? Не соромтеся зв’язатися з нами електронною поштою!