Литвек - электронная библиотека >> Хелен Борри >> Базы данных и др. >> Firebird. Руководство разработчика баз данных >> страница 4
имеет богатый язык процедурных расширений, PSQL, для написания хранимых процедур и триггеров. Это структурированный язык с поддержкой циклов FOR для множеств, условными переходами, обработкой ошибок и пересылкой событий. После создания код PSQL компилируется и сохраняется в двоичном виде.

Триггеры имеют сильную поддержку с фазами До (Before) и После (After) каждого события манипулирования данными. Для каждой фазы/события может существовать множество триггеров, они могут содержать номера, задающие последовательность выполнения. Firebird 1.5 и выше поддерживает триггеры Before и After, которые обрабатывают все три события манипулирования данными с условными переходами для каждого события.

Ссылочная целостность

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

Оперативное копирование базы данных

Серверы Firebird могут при необходимости поддерживать создание оперативных копий базы данных. Оперативная копия (shadow) является копией базы данных реального времени с некоторыми дополнительными атрибутами, которые делают ее недоступной для чтения, пока она не будет сделана доступной сервером в качестве базы данных. Оперативные копии могут переключаться либо вручную, либо автоматически. Назначение оперативного копирования - сделать базу данных доступной в кратчайший срок при поломках диска.

Оперативное копирование не является репликацией.


Безопасность


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


! ! !

ВНИМАНИЕ! Поскольку встраиваемый сервер (см. разд. "Встраиваемый сервер") разработан для однопользовательских, автономных приложений, он совершенно не проверяет безопасность для хоста. Привилегии SQL, заданные на уровне базы данных, еще применяются, но приложение через встраиваемый сервер может получить доступ к любой базе данных на этом компьютере без указания пароля. (См. главу 34.)

. ! .


Привилегии SQL
Хотя пользователь должен быть авторизован для доступа к серверу Firebird, но никакой пользователь, за исключением SYSDBA и владельца базы данных, не имеет автоматически никаких прав на индивидуальную базу данных. Безопасность на уровне базы данных поддерживается посредством привилегий SQL. Пользователям должны быть явно предоставлены привилегии к любому объекту.

Роли SQL позволяют объединить несколько привилегий в группу и предоставить как "пакет" индивидуальным пользователям. Отдельный пользователь может иметь привилегии от нескольких ролей, хотя только одна роль может быть выбрана при соединении с базой данных.


Рабочие режимы
Сервер Firebird может быть инсталлирован для выполнения в одном из трех рабочих режимов (operating modes): Суперсервер (Superserver), Классический сервер (Classic server) и Встраиваемый сервер (Embedded server). Различие между ними- скорее вопрос архитектуры. Любое клиентское приложение, написанное для соединения с Суперсервером, может соединяться точно тем же способом и с Классическим сервером и выполнять в точности те же задачи. Обратное также верно, за исключением того, что у Суперсервера более высокие требования к безопасности потоков для модулей внешних функций (определенные пользователем функции, библиотеки наборов символов, BLOB-фильтры).

Встраиваемый сервер является вариантом Суперсервера.


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

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


! ! !

ПРИМЕЧАНИЕ. Классический сервер для Windows недоступен в версиях Firebird, предшествующих 1.5.

. ! .


Суперсервер
В 1996 году в предшественнике Firebird, InterBase 4.1 появился многопоточный Суперсервер для новых тогда 32-битных платформ Windows. Он позволял лучше использовать новые возможности серверов и компьютерных сетей. Возможности Суперсервера исключить взаимоблокировку поточных процессов и динамически выделять кэш-память сделали его более удобным, чем Классический сервер, когда велико количество пользователей, выполняющих чтение/запись, а системные ресурсы ограничены.

С бурным ростом операционных систем GNU/Linux на базе Intel к концу 1990-x годов Суперсервер стал хорошим решением для некоторых платформ POSIX. Основная структура Суперсервера для Linux была реализована в InterBase бета-версии 6.0 с открытыми исходными кодами и затем была полностью реализована в Firebird 1.0. Архитектура Суперсервера стала доступной для платформ Sun Solaris.


Встраиваемый сервер
Firebird 1.5 представил встроенный вариант Суперсервера для платформ Windows. В этой модели Суперсервер компилируется вместе с встроенным клиентом, который напрямую подключается к базе данных. Одна динамическая библиотека (fbembed.dll) использует межпроцессное коммуникационное пространство Windows для передачи клиентских запросов и ответов сервера. Его API идентичен API обычного Суперсервера или Классического сервера. В коде приложения не требуется ничего специального для использования встраиваемого сервера.

Приложение, использующее встраиваемый сервер, может применять только локальный метод доступа (см. главу 2) и поддерживает один и только один клиентский процесс. Вы можете использовать столько встроенных приложений на одной машине, сколько вам нужно, однако одна база данных может в каждый момент времени быть открыта только одним таким приложением. Приложение