InterBase, как версионная РСУБД, существует на рынке коммерческих СУБД уже более 20 лет. Firebird является веткой кода, развивающейся самостоятельно с 2001 года.
Использование Firebird как сервера, поддерживающего многоверсионность, обусловило легкость его применения в самом широком спектре задач. На самом деле даже при случайном выборе названия какой-либо известной фирмы, можно на 90% утверждать, что для какой-либо задачи в этой фирме используется InterBase или Firebird (часто бывает, что в разных подразделениях используется и тот и другой сервер). Это большая часть сотовых операторов, многие банки, промышленные предприятия. На www.ibase.ru есть каталог подобного ПО, представляющий лишь малую часть программного обеспечения, использующего Firebird.
Операционные систем
Изначально код сервера разрабатывался под Unix, и в конце 80-х был портирован на ~12 различных вариантов Unix. В 1992 году появился вариант и для Windows, причем его характерной чертой была и остается способность работать на любом варианте настольной или серверной Windows – 98, ME, XP, 2000, 2003, Vista.
В настоящий момент поддерживается несколько популярных клонов Linux, а также других вариантов Unix, включая различные аппаратные платформы. Планируется портирование и под платформу ARM.
Примеры применения
Firebird используется практически везде. От задач мелкого бизнеса с базами данных от 300мб до 8 гигабайт и числом пользователей до 50, до крупных систем с базами в 150-300 гигабайт и числом одновременных пользователей до 600.
Также существует и широкое применение Firebird Embedded (встраиваемого варианта в виде dll) в однопользовательских системах, где пользователи программ не имеют представления, с какой СУБД они работают. Например, это ПО для диска к журналу UPGRADE (Пирит), CRM QuickSales, ПО оптимизации web-сайтов WebCEO (390 тысяч инсталляций).
Более крупные и многопользовательские БД – сеть магазинов Магнит (около 1000) в России и подобные за рубежом, филиалы различных банков и страховых организаций, и т.д. Из наиболее крупных систем известны внедрения ERP AVARDA (Ansoft) – FinnFlare, Ecco, CarpetHouse и др.
Драйверы и инструменты
Легкость использования API и наличие большого количества разнообразных компонент прямого доступа дают возможность разработчикам быстро создавать инструментарий, как общего назначения, так и специфический.
На текущий момент существует
- Около 45 драйверов к различным средам и системам
- Компоненты прямого доступа, ODBC и OLEDB, .Net… - каждых по 5-8 вариантов
- Поддержка почти во всех web-системах разработки
- ~10 самых популярных инструментов разработчика
- Множество сервисного инструментария
- Репликаторы, копирование данных, наборы функций, сравнение БД…
Структура проекта Firebird
Развитие проекта в OpenSource зависит от взаимодействия между пользователями и разработчиками. Если разработчики дорабатывают и улучшают проект самостоятельно, то как правило, такой проект обречен на "полумертвое" существование, из-за отсутствия качественной обратной связи с пользователями, и невозможностью качественного развития проекта в "свободное время". Тем более, это имеет важное значение для сервера баз данных, который сам по себе является сложным продуктом.
Для обеспечения стабильного и непрерывного развития Firebird 20 ноября 2002 года была создана некоммерческая организация Firebird Foundation, которая принимает спонсорские и членские взносы, и направляет их на выполнение грантов или заказов (специальных задач по развитию той или иной функциональности Firebird) и обслуживание затрат проекта (тестирование, администрирование, поддержка сайтов и т.п.). Вместе с финансированием существует группа администраторов, или "архитекторов" проекта, которые, обеспечивая тесную связь с пользователями Firebird определяют приоритетные направления развития (например, представляют в FF запрос на грант по определенной функциональности).
Из финансируемых областей можно упомянуть оптимизатор запросов, инкрементальный бэкап, odbc-драйвер, jdbc-драйвер, тестирование, сборка дистрибутивов и многое другое. Независимо от источника финансирования оплаченная разработка обязательно становится доступной всем пользователям Firebird.
Такая организация, в том числе обеспечивает уверенность пользователей в стабильности развития проекта.
Лицензия на код Firebird не ограничивает его коммерческое использование никаким образом (базируется на лицензии Mozilla). Единственное требование – при модификации оригинального кода и распространении основанных на таком коде версий сервера – предоставлять пользователям и проекту Firebird эти изменения кода.
Основные изменения в Firebird 2.1
Мониторинг состояния сервера
расширения SQL
- Common Table Expressions
- Replace/Merge
Временные таблицы
Аутентификация Windows
Триггеры уровня БД
Перечислены наиболее существенные новшества Firebird 2.1. Остальное – более 50-ти новых встроенных функций, оптимизация сетевого протокола, расширенная поддержка Unicode, и многое другое.
Данные изменения всего-лишь эволюционные – хотя они являются абсолютно новой функциональностью, архитектура сервера при этом никак не изменилась. Сервер продолжает существовать в виде немасштабируемой на многопроцессорных системах архитектуры SuperServer, и масштабируемой – Classic.
Firebird 2.5
Размер кэша БД более 2 гигабайт
Регулярные выражение в WHERE (SIMILAR)
Расширение списка 64-разрядных дистрибутивов для новых операционных систем
Автономные транзакции
Гетерогенные запросы
Архитектура СуперКлассик
Трассировка (аудит)
Версия 2.1 была чисто эволюционной. В ней добавили много функций. Но ничего глобального там не решено. Потому и номер минорный относительно 2.0.
Версия 2.5 устанавливает новую технологическую платформу в плане многопоточности (как в свое время 1.5 стала платформой в плане перехода на С++). Большинство изменений не очевидны при взгляде снаружи.
Попробую их перечислить:
- Все билды сервера теперь изначально многопоточны. Включая posix-классик, который раньше был врожденно однопоточным. Это делает возможным, например, такие вещи, как закрытие коннекта сервером в случае обрыва связи с клиентом. Раньше это работало только на SuperServer. Так же в 2.5 клиентская библиотека стала полностью потокобезопасной. Сервисы классик-сервер теперь выполняет в отдельных потоках, работает это быстрее.
- Сильно переработан менеджер блокировок. На posix он больше не требует редиректа сигналов через fb_lock_mgr, в 2.5 его больше нет. Также снято ограничение на кол-во семафоров и убрана соответствующая часть параметров конфигурации.
- Синхронизация сервера единым мьютексом канула в лету. Сейчас каждая подсистема сервера синхронизируется самостоятельно, на низком уровне. В ядре пока все еще не так замечательно, т.к. синхронизация в SuperServer пока сделана на уровне БД, следовательно разные соединения по-прежнему будут ставиться в очередь, но это все равно лучше, чем раньше, т.к. коннекты к разным базам будут абсолютно параллельно работать на SMP-системах. Введен новый режим работы, т.н. супер-классик: по сути это классик с потоками вместо процессов. За счет более эффективного менеджера блокировок использующего преимущества работы в одном адресном пространстве) он выигрывает в нагрузочных тестах по сравнению со старым классиком порядка 15-20%. Кроме того, он поддерживает пул потоков, т.е. менее требователен к ресурсам. Напоследок, он лучше масштабируется (у обычного классика есть проблемы с числом коннектов более 600-800).
По сути, 2.5 это намного более "длинный" шаг вперед к обещанным в 3.0 SMP-чудесам, чем все предыдущие версии вместе взятые. Именно поэтому она, как и 1.5 в свое время, является довольно революционной.
Дополнительных расширений в ней будет немного, стоит отметить самые заметные:
- запросы к внешним БД
- автономные транзакции (уровня процедуры/триггера/PSQL-блока)
- трассировка/аудит всей активности
- асинхронное отключение коннектов через MON$-таблицы
- регулярные выражения в предикатах
- ALTER VIEW
Разработка 3.0 на базе 2.5 начнется ориентировочно в мае, основная цель распараллеливаемая многопоточность с общим кешем.