Firebird
Firebird (FirebirdSQL) — свободная кроссплатформенная реляционная система управления базами данных, работающая на macOS, Linux, Microsoft Windows и некоторых Unix-платформах.

Создан в 2001 году как ответвление Interbase 6.0, развивается сообществом разработчиков без явной поддержки какой-либо крупной корпорации.

Как и Interbase, использует MVCC, поддерживает хранимые процедуры на языке PSQL, триггеры, транзакционно-независимые 64-битные генераторы последовательностей. Имеется возможность работать с базами данных только для чтения (что позволяет использовать базы данных, например, на CD-ROM и удобно в комбинации со встраиваемой версией сервера Firebird Embedded). Реализовано несколько уровней изолированности транзакций, обеспечивается резервное копирование без останова сервера. Реализована поддержка Юникода.

Внешние функции (UDF) могут быть написаны на любом языке и легко подключены к серверу в виде разделяемых библиотек, позволяя расширять возможности сервера «изнутри». Поддерживается SQL-92 Entry Level 1, реализована большая часть стандарта SQL-99, существует ряд дополнений стандартного синтаксиса.

Работает на аппаратных платформах x86, x64 и PowerPC, SPARC, выпускались версии для Windows, Linux, macOS, HP-UX, FreeBSD, Solaris и ряда других операционных систем, впоследствии сборка стала вестись только для 32- и 64-разрядных версий Windows, Linux и macOS.

Для доступа к серверу сторонними разработчиками выпускаются собственные наборы компонент для Си и C++, Delphi, классы для ADO, драйверы ODBC и JDBC. Имеются драйверы для Python, PHP, драйвер OLE DB, dbExpress, провайдер данных .NET и прямой доступ с использованием клиентской библиотеки сервера (fbclient.dll или GDS32.dll).

Базы данных могут быть расположены в нескольких файлах, предельный размер которых зависит от операционной системы, теоретический предел — 64 TБ для одного файла базы данных.

Существует четыре архитектуры сервера:
 ClassicServer — один процесс на одно соединение, поддержка многопроцессорных машин;
 SuperServer — все соединения используют один процесс, меньшие требования к памяти при большем быстродействии (до 3.0 — только для однопроцессорных);
 SuperClassic Server — один процесс, но свой поток на каждое соединение, начиная с версии 2.5;
 Embedded — система содержится в одной библиотеке с именем клиентской библиотеки сервера, подходит для однопользовательских систем и не требует инсталляции в Windows.

Все архитектуры используют одинаковый формат файла базы данных, таким образом, в любой момент можно переключиться на другую архитектуру.

Выпускается под условиями IPL (InterBase Public License) и IDPL (Initial Developer’s Public License), которые совпадают с условиями Mozilla Public License 1.1. Firebird бесплатен для использования и распространения, в случае модификации исходного кода сервера требуется публикация изменений.

История версий Firebird

1.0 (последний релиз 1.0.3 от 4 июня 2003) 
Релиз Firebird 1.0 - это первая версия (ноябрь 2001 года), базирующаяся на открытых исходных текстах InterBase 6.0. Поэтому в основном релиз содержит большое число исправлений ошибок IB 6.0.

 Расширенные проверки зависимостей (udf и генераторы)
 Убраны проблемы с размером файла БД более 4 гигабайт (кроме FAT16 и FAT32, где файл не может быть больше 2-4 гигабайт)
 Поддержка размера страницы БД 16 килобайт
 ForcedWrites теперь ON по умолчанию при создании БД
 Параметр конфигурации для задания расположения внешних файлов
 Увеличено количество внешних файлов, открываемых одновременно
 Внешний файл закрывается, если внешняя таблица удаляется
 Добавлен параметр CPU_Affinity (Superserver)
 Возможность указания номера порта в строке коннекта
 Параметр NONAGLE для Linux
 Расширения isc_info_database
 Счетчик записей для gbak (при указании опции -v)
 Переменные CURRENT_USER и CURRENT_ROLE
 Команда DROP GENERATOR
 Возможность группировки по UDF (group by <function>)
 Команда RECREATE PROCEDURE
 Команда RECREATE TABLE
 Опции SELECT FIRST (<int>) SKIP (int) ...
 Функция SUBSTRING(<str> FROM <pos> [FOR <length>])
 Команда PLANONLY для ISQL
 Новый маркер комментариев --
 Расширения ib_udf (SUBSTR, SUBSTRLEN, ASCII_CHAR)
 Новый набор функций FBUDF.DLL
 By descriptor в параметрах UDF

1.5 (последний релиз 1.5.6 от 8 октября 2009) 
Firebird 1.5 выпущен на базе Firebird 1.0, с переводом кода с C на C++.

 Восстановлена архитектура Classic для Windows
 Создан вариант embedded
 Расширен SQL - CASE, COALESCE, NULLIF
 Изменено имя базы безопасности (security.fdb) и других модулей - клиента, файла сообщений
 Новый файл конфигурации firebird.conf, с новыми параметрами
 Передача varchar по сети в "сжатом" виде
 Триггеры мульти-действий (insert or update or delete)
 Индексы по constraint PK, FK, Unique автоматически принимают имя constraint (если задано)
 Индексов у таблицы может быть до 256 (раньше было не более 64)
 Улучшенная обработка ошибок. Расширенная обработка ошибок в процедурах и триггерах
 Разрешается пустой блок BEGIN/END
 Новые таблицы символов
 Расширения в ISQL
 Новые функции в ib_udf и fbudf
 Улучшения оптимизатора

2.0 (последний релиз 2.0.7 от 12 апреля 2012) 

 Ускорена передача данных по сети
 Локальный протокол заменен на XNET
 Убрана трансляция прав доступа через NetBEUI
 Новая политика сборки мусора (см. firebird.conf, GCPolicy)
 Classic поддерживает все функции Services API, идентично SuperServer
 Параметр лимита ожидания по блокировкам WAIT
 Ускоренный поиск в строках и blob
 Исправления обновляемых view
 Новые режимы shutdown БД
 Новый формат БД - теперь одна таблица может иметь размер больше 36 гигабайт
 Новый формат БД - индексируемая строка может быть 1/4 размера страницы (до 4к при размере страницы 16к)
 Значительные улучшения оптимизатора
 Расширения клиентского API
 Новые встроенные строковые функции (lower, trim)
 Инкрементальный бэкап (nbackup)

2.1 (последний релиз 2.1.7 от 5 декабря 2014) 

 Глобальные триггеры базы данных
 Общие табличные выражения (CTE)
 Временные таблицы
 Возможность мониторинга базы данных через SQL
 Отмена зависших запросов
 Новые SQL инструкции

2.5 (последний релиз 2.5.9 от 24 июня 2019) 
Основной целью Firebird 2.5 было заложить основу для многопоточной архитектуры будущих версий. В данной версии в основе двух моделей Firebird Super Server и Firebird Classic лежит общий код, осуществляющий низкоуровневую синхронизацию и потокобезопасность.

3.0 (последний релиз 3.0.10 от 8 июня 2022) 
В этой версии Firebird подвергся наиболее серьёзной переработке за 14 лет своего существования. Новая многопоточная архитектура и улучшенный общий кэш страниц намного эффективнее используют многоядерные процессоры и большие объемы оперативной памяти.

Благодаря этим изменениям версия Firebird 3.0 демонстрирует значительное увеличение производительности, в то же время сохраняя обратную совместимость со старыми клиентскими библиотеками.

Помимо этого Firebird 3.0 представляет большой список новых возможностей языка SQL (включая оконные и статистические функции) и добавляет расширенные возможности безопасности, такие как шифрование базы данных и сетевого трафика – всего более 100 существенных нововведений. Несмотря на новые возможности, ориентированные на предприятия и большие базы данных, Firebird 3.0 сохраняет свою компактность, возможность простого встраивания и управления, которые сделали его правильным выбором для многих приложений по всему миру.

4.0 (последний релиз 4.0.3 от 4 августа 2023) 
Firebird 4.0 вводит новые типы данных и множество улучшений без радикальных изменений в архитектуре или работе, наиболее важными из которых являются: логическая репликация, более длинные идентификаторы метаданных, поддержка международных часовых поясов, тайм-ауты для подключений и инструкций.

5.0 (последний релиз 5.0 бета 1 от 27 марта 2023) 
Firebird 5.0 вносит множество улучшений без каких-либо изменений в архитектуре или работе, наиболее важными из которых являются:

 Параллельная (многопоточная) работа для резервного копирования/восстановления, развертки и создания индекса
 Частичные индексы
 SKIP LOCKED для инструкций SELECT WITH LOCK, UPDATE и DELETE
 Встроенное незначительное обновление ODS
 Скомпилированный кэш инструкций
 Профайлер для PLSQL и SQL
 WHEN NOT MATCHED BY SOURCE для инструкции MERGE
 Поддержка нескольких строк для DML RETURNING
 Новые встроенные функции и пакеты
 Более плотное сжатие на уровне записи
 Сетевая поддержка прокручиваемых курсоров

Примечания

Литература

Ссылки 
 Firebirdsql — Официальный сайт

Свободные СУБД
Кроссплатформенное программное обеспечение
Программное обеспечение с лицензией MPL
Программное обеспечение Borland