4PC.INFO - все для вашего компьютера и о нем
Rambler's Top100
 
 Hardware
 Драйвера
 Производители Hardware
 Объявления
 Глоссарий
 Владельцам сайтов
 Ссылки

Rambler's Top100
liveinternet.ru: показано число посетителей за сегодня

Встроенный сервер БД

Software / Программирование
30 сентября 2005

Внедряем Firebird.

Почему-то считается, что для создания так называемых персональных баз данных идеально подходят такие форматы как dBase, Paradox, Access, а реляционные СУБД – это что-то невообразимо сложное и большое. Совершенно ничего не имею против первого, а хочу показать, что второе не такое уж сложное и большое, если использовать правильный сервер. Я буду говорить о Firebird – сервере реляционных баз данных, поддерживающем стандарт ANSI SQL-92 и работающем под Linux, Windows и множеством Unix платформ.

Наверное, как и многие, кто пишет программы в среде Delphi, я начал свое знакомство с миром SQL с сервера InterBase, который фирма Борланд любезно включила в состав дистрибутива своей среды разработки. Не знаю почему, но с тех пор – InterBase, а сейчас Firebird, моя первая любовь в среде баз данных. Сервер Firebird создан на основании открытых исходных текстов InterBase, и весьма основательно отличается от родителя, а в скором будущем произойдет слияние двух популярных версий сервера InterBase - Firebird и Yaffil. Еще одно преимущество – оригинальный InterBase от Борланд уже давно стал платным, а Firebird – нет.


Текущей версией сервера является релиз 1.5.2. Свежую сборку под различные ОС также как и исходные тексты всегда можно найти по следующему адресу: http://firebird.sourceforge.net/.

В версии 1.5 сервера Firebird произошли значительные изменения, по сравнению в версией 1.0.х: движок переписан на С++, добавлена библиотека внедренного сервера, расширен синтаксис языка, как обычно, исправлены старые ошибки, добавлены новые. [Также], теперь Firebird полностью отделен от своего предка: переименованы все основные модули сервера и клиентские библиотеки. Таким образом, [теперь] появилась возможность работы на одной машине как с оригинальным InterBase, так и с Firebird.
Firebird может быть использован как для создания малых баз данных для использования в домашних условиях, так и для больших организаций, обеспечивая надежность и скорость обработки данных.
Многие говорили, ну вот – для работы с базой надо еще и сервер за собой тягать: он и место на диске занимает и в памяти постоянно находится, даже когда не нужен для работы.


Теперь об этих «страхах» можно спокойно забыть. С версии 1.5 Firebird получил возможность работать в качестве embedded (англ. внедренный) сервера, то есть для работы с базами данных нет необходимости иметь запущенный сервер, вся функциональность умещается в одной динамически загружаемой библиотеке. Внедренный сервер обладает теми же особенностями и предоставляет приложению тот же API, что и обычный. Он разработан, чтобы работать как часть существующего приложения.


И что же, мы «безвозмездно, то есть даром» получаем персональную базу данных со всеми возможностями передовых клиент-серверных технологий, таких как хранимые процедуры, триггеры, транзакции. И все это великолепие занимает около двух с половиной мегабайт (естественно, без учета вашей программы и файла базы данных), что значительно меньше примерно восемнадцати мегабайт установленного БДЕ, который обычно используется для доступа к БД dBase, Paradox.


Можно возразить, что для небольшой локальной базы не сильно-то и нужны все эти триггеры, транзакции и хранимые процедуры. Может и так, но почему бы один раз правильно не спроектировать базу данных и предоставить серверу самому заниматься управлением целостностью и непротиворечивостью базы.
Теперь немного о том, как настроить для работы то, что так красиво звучит.


Внедренный сервер – это полностью функциональный сервер, который разработан в виде DLL и имеет те же функциональные возможности, что и обычный сервер Firebird. Просто возьмите файл fbembed.dll из дистрибутива, переименуйте его в fbclient.dll или gds32.dll, в зависимости от настроек соединения вашей программы и скопируйте полученный файл в каталог с вашей программой - и все (ну, почти все). Строка подключения к базе данных в ваше программе должна содержать абсолютный путь к локальной базе данных или алиас БД, если он указан в файле конфигурации aliases.conf. Практически, ваше приложение может не знать, работает ли оно с встроенным или обычным сервером БД.


При запуске ваша программа будет использовать внедренный сервер в качестве клиентской библиотеки. При этом можно запускать несколько различных приложений, использующих внедренный сервер, без каких-либо конфликтов между ними, также не обязательно выгружать работающий InterBase или Firebird сервер. Правда, вы не сможете получить доступ к одной базе из нескольких приложений, так как внедренный сервер блокирует базу для эксклюзивного доступа, но ведь для локальной базы нам и не нужен доступ от нескольких клиентов. Тем более, что всегда остается возможность использовать обычный Firebird.
Ну, а если есть необходимость использовать библиотеки INTL (поддержка национальных кодировок) или UDF (функции, определяемые пользователем), их необходимо скопировать в каталоги \INTL или \UDF каталога вашей программы, повторяя структуру каталогов обычного сервера Firebird. Также в каталог с программой можно поместить файл конфигурации firebird.conf и файл сообщений firebird.msg.



Таким образом, мы получаем следующую структуру каталогов:

\ Каталог моей программы \application.exe
\ Каталог моей программы \fbclient.dll или gds32.dll
\ Каталог моей программы \firebird.conf
\ Каталог моей программы \firebird.msg
\ Каталог моей программы \intl\fbintl.dll
\ Каталог моей программы \udf\fbudf.dll

А теперь немного о грустном - плохие новости для любителей безопасности: внедренный сервер не использует в работе базу данных безопасности security.fdb, поэтому любой пользователь может подключиться к любой базе данных, правда, привилегии (роли) пользователя по-прежнему проверяются.


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



Автор: Cat

Cat's cry
Версия для печати

Статьи из раздела: Software / Программирование
17/10/2005 Достучаться до базы
02/10/2005 "Рулим" базой Firebird
Статьи, размещенные на нашем сайте являются собственностью их авторов.
Авторы несут полную ответственность за содержание своих статей.
Администрация может не разделять мнения авторов. Обсуждение возможно на страницах форума сайта.
 
Разделы: Hardware | Драйвера | Производители Hardware | Объявления | Глоссарий | Владельцам сайтов | Ссылки |
4PC.info: О сайте | Статистика | Реклама на сайте