Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЭУБД лекции.doc
Скачиваний:
25
Добавлен:
27.08.2019
Размер:
399.36 Кб
Скачать

Сервер interbase

SQL-сервер Local InterBase

Все серверы БД имеют похожие принципы организации данных и управления ими. Локальный сервер InterBase представляет собой локальную копию (версию) настоящего сервера Interbase, он устанавливается на компьютер локально, и позволяет локально разрабатывать и отлаживать приложения для работы с удаленными БД. В результате становится возможным так называемое масштабирование БД. Приложение, отлаженное локально для Local InterBase, может быть без всяких изменений перенесено на удаленный компьютер и будет работать с удаленной базой данных. SQL-сервер InterBase является "промышленной" СУБД, предназначается для хранения и выдачи больших объемов информации, в условиях одновременной работы множества клиентских приложений.

Целостность БД задается путем использования:

  1. Отношения подчиненности между таблицами путем задания первичных ключей у родительской таблицы (primary) и внешних – у дочерних (foreign).

  2. Ограничения на значения отдельных столбцов путем определения ограничений (constraint) на значение домена или столбца.

  3. Бизнес-правил, задаваемых при помощи триггеров, т.е. подпрограмм, автоматически выполняемых сервером до или (и) после события изменения записи в БД.

  4. Уникальных значений нужных полей путем создания и использования генераторов (generator).

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

Для ускорения работы клиентских приложений с удаленной БД могут быть использованы хранимые процедуры(stored procedure), т.е. процедуры, которые хранятся и выполняются на сервере.

В составе записей БД могут входить BLOB-поля, предназначенные для хранения больших объемов информации в двоичном виде: текст, графические документы, файлы, мультимедиа и т.д. Интерпретация BLOB-полей выполняется в клиентском приложении, однако разработчик может определить BLOB-фильтры для автоматического преобразования BLOB-поля в другой вид.

InterBase позволяет определить UDF (user defined function) – пользовательские функции, в которых могут реализовываться подпрограммы, отсутствующие в стандартных функциях InterBase, например, вычисление максимума и минимума, преобразование типов, и т.п. Функция пишется на любом языке программирования в виде DLL.

InterBase может посылать уведомления клиентским приложениям о наступлении события. Для обеспечения быстрого выполнения запросов можно создавать виртуальные таблицы, в которых объединены записи в соответствии с некоторым условием.

Физическая организация базы данных формата InterBase

БД состоит из последовательности страниц, нумеруемых с нуля.

Нулевая страница является служебной и содержит информацию, необходимую для соединения с БД.

Размер страницы – 1 Кб (по умолчанию), а также 2, 4, 8 Кб – установлен при создании и может быть изменен при сохранении и восстановлении БД, поэтому размер страницы рекомендуется задавать равным размеру кластера диска. При этом учитывается длина записи и наличие BLOB-полей. Объем буфера ввода-вывода для операции чтения и записи определяется количеством страниц (75 по умолчанию). Если БД будет читаться чаще, объем следует увеличить.

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

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

Многоверсионная структура записи и неоптимальное выделение страниц ведут к высокой фрагментации и замедлению работы с БД, поэтому периодически приходится выполнять дефрагментацию либо путем сохранения БД на диске с последующим восстановлением из резерва копий, либо путем автосборки "мусора".