10. Встроенный сервер

10.1. Общие сведения

В СУБД РЕД База Данных существует специальный режим работы, называемый «встроенным» (embedded). Этот режим предназначен для прямого локального доступа приложения клиента к файлу базы данных минуя клиент-серверное сетевое подключение. При этом отдельная настройка сервера не требуется.

10.2. Установка embedded сервера

В ОС Windows

Встроенный режим не требует процедуры установки СУБД как таковой. Загрузите с официального сайта РЕД Базы Данных архив вида: bin/windows/x86_64/RedDatabase-OE-5.0.Х.Х-windows -x86_64.zip для 64-х разрядной версии. Обратите внимание, что битность дистрибутива должна совпадать с битностью вашей ОС.

Распакуйте соответствующий дистрибутив в рабочий каталог вашей программы. Для работы встроенного режима достаточно скопировать файлы из корневого каталога дистрибутива СУБД РЕД База Данных, а также все файлы из папки /intl и /plugins (достаточно файла engine12.dll).

В ОС Linux

Данная установка производится аналогично установке под Windows. В данном режиме в качестве провайдера используется библиотека /plugins.libengine12.so. Для работы встроенного сервера достаточно скопировать файлы из корневого каталога дистрибутива СУБД РЕД База Данных, и папок /bin, /intl и /plugins (достаточно файла libengine12.so).

В системе должна быть установлена библиотека libicu.

В случае возникновения ошибки подключения: "error while loading shared libraries: libtinfo.so.5" потребуется установить пакет ncurses-compat-libs.

10.3. Подключение

Для подключения в режиме встроенного сервера через API РЕД Базы Данных клиенту следует указать в строке подключения локальный путь (без хоста) к файлу базы данных (или его алиас, прописанный в файле databases.conf).

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

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

10.4. Несколько одновременных подключений

По умолчанию встроенный сервер запускается на всех доступных платформах (Windows, Linux) в режиме SuperServer.

Настройка архитектуры находится в конфигурационном файле firebird.conf:

ServerMode = Super

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

Решение состоит в том, чтобы запустить встроенный сервер как процесс [Super]Classic совместно с вашим сетевым сервером работающим также в режимах Superclassic или Classic. Раскомментируйте параметр в конфигурационном файле firebirds.conf вашего встроенного сервера и установите для него значение Classic или SuperClassic:

ServerMode = Classic

Обратите внимание, что для встроенного сервера режимы Classic и SuperClassic эквивалентны.

10.5. Запуск инструментов администрирования

Нет необходимости создавать отдельную файловую среду, если вы планируете использовать встроенное соединение для запуска инструментов администрирования, таких как gbak или gfix, или запуска привилегированного DDL в режимах Classic или Superclassic. Просто сохраните исход- ную конфигурацию провайдеров и войдите в систему, используя в строке подключения локальный путь к файлу базы данных и любое имя пользователя, необходимое для выполнения задач.

10.6. Примеры подключения

Для консольного подключения к базе данных в режиме встроенного сервера можно исполь- зовать утилиту isql из состава дистрибутива.

_images/embedded_isql_Win.PNG

Рис. 10.1 Консольное подключение в режиме встроенного сервера через утилиту isql для Windows

_images/embedded_isql_Linux.PNG

Рис. 10.2 Консольное подключение в режиме встроенного сервера через утилиту isql для Linux

_images/embedded_Python.PNG

Рис. 10.3 Пример кода подключения к базе данных на языке Python