Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Управление скриптами вашей схемы
Разделы на этой странице:
Управление скриптами вашей схемы
Хранение хорошо организованных множеств скриптов, которые точно отражают самое последнее состояние ваших метаданных, является полезной практикой, которая прекрасно удовлетворяет большинству надежных высококачественных систем. Очень рекомендуется использовать в скриптах подробные комментарии при архивировании всех версий скриптов в версии управляющей системы.
Восстановление после сбоев
Наиболее очевидная цель такой практики - "возврат к последней точке" при восстановлении после сбоев. Если беда идет за бедой - база данных разрушена, а резервные копии потеряны - метаданные можно восстановить из скриптов. Сохранившиеся данные из другой невосстанавливаемой базы данных могут быть восстановлены специалистами и помещены в базу данных.
Управление разработкой
Скорее всего, несколько разработчиков будут создавать базу данных в течение ее жизненного цикла. Известно, что разработчики ненавидят написание системной документации! Хранение аннотированных записей скриптов о каждом изменении базы данных- включая те, которые использовались интерактивно через isql или инструмент сторонних разработчиков, - это безболезненное и безопасное решение, которое работает во всех случаях.
Извлечение метаданных
Некоторые инструменты администратора для Firebird, включая isql, могут выделять метаданные из базы данных и сохранять их в виде файла скрипта. Об использовании isql см. разд. "Извлечение метаданных" главы 37. Так как извлечение метаданных является удобным помощником в вашем использовании скриптов, существует множество причин трактовать эти инструменты как "ассистенты" и взять себе за правило вручную поддерживать ваши главные скрипты схемы.
* Firebird не хранит комментарии при сохранении определений метаданных. Многие системные таблицы имеют столбец BLOB, обычно называемый RDB$DESCRIPTION, в котором может сохраняться в виде единого целого часть предоставленного пользователем описания. При извлечении метаданных инструментом isql этот столбец не выводится, хотя некоторые инструменты сторонних разработчиков его поддерживают.
* Все инструменты извлечения метаданных генерируют только текущие метаданные. Не существует истории изменений - даты, причины или авторы изменений.
* Некоторые инструменты, включая isql, генерируют метаданные в неверной последовательности с точки зрения зависимостей, делая скрипты невозможными в использовании для перегенерации базы данных без их корректировки. Подобная задача может быть утомительной или даже невозможной в зависимости от того, насколько выполняющий ее человек хорошо знает метаданные.
* Даже умеренно увеличивающаяся в размерах база данных может иметь огромное количество объектов, особенно когда проектирование системы приводит к интенсивному использованию модулей встроенного кода. Слишком большие скрипты часто завершаются с ошибками по причине различных ограничений в выполнении или в ресурсах. Большие, плохо организованные скрипты также сбивают с толку и раздражают при использовании их в качестве документации.
Создание скриптов вручную
Автор жестко пропагандирует поддержку полностью аннотированных скриптов схемы вручную и разделение их на несколько отдельных файлов. Пример набора скриптов в табл. 14.2 описывает и регенерирует базу данных с именем leisurestore.fdb.
Таблица 14.2. Пример набора скриптов для схемы
Файл |
Содержимое |
leisurestore_01 .sql |
Оператор CREATE DATABASE; определения CREATE DOMAIN, CREATE GENERATOR и CREATE EXCEPTION |
leisurestore_02.sqi |
Все операторы CREATE TABLE, включая ограничения UNIQUE; операторы ALTER TABLE добавляют все первичные ключи в виде именованных ограничений PRIMARY KEY |
leisurestore_03.sql |
Операторы ALTER TABLE, добавляющие ограничения FOREIGN KEY |
leisurestore_04.sql |
Операторы CREATE INDEX |
leisurestore_05.sql |
Операторы CREATE TRIGGER |
leisurestore_06.sql |
Операторы CREATE PROCEDURE |
leisurestore_07.sql |
Скрипт операторов DML, который добавляет строки в статичные (управляющие) таблицы |
leisurestore_08.sql |
Операторы GRANT (скрипт безопасности) |
leisurestore_09.sql |
Более поздние изменения в корректной последовательности зависимостей |
leisurestore_10.sql |
Скрипты QA (тестовые данные) |
Цепочки скриптов
Устойчивый набор скриптов может быть соединен вместе в цепочку с использованием оператора isql INPUT В качестве последнего оператора в предыдущем скрипте. Например, для присоединения скрипта leisurestore_0.sql к leisurestore_01.sql завершите скрипт следующим образом:
. . .
COMMIT;
-- присоединение к операторам CREATE TABLE
INPUT 'd:scriptsleisurestore_02.sql' ;
-- не забудьте добавить пустую строку!
Подход, основанный на главном скрипте
Оператор INPUT не обязательно должен быть последним в скрипте. Поэтому другим полезным подходом к поддержке набора скриптов является наличие "главного" скрипта, который вводит каждый дополнительный скрипт в нужном порядке. Это создает преимущества в поддержке больших наборов скриптов. Вы можете включить комментарии для сообщения о содержании каждого входного скрипта.
Пора дальше
А теперь - за создание баз данных! В следующей главе вы не только научитесь создавать базы данных, но также и сохранять их чистыми, безопасными и с хорошей производительностью. Существует не так много способов разрушения баз данных Firebird, однако раздел в конце этой главы описывает пять способов сделать это. Предупрежден, значит вооружен!
- Скрипты схемы
- УПРАВЛЕНИЕ РЕПУТАЦИЕЙ В ИНТЕРНЕТЕ
- 3. Схемы отношений. Именованные значения кортежей
- Глава 7 Управление хранилищем данных
- Глава 11 Корпоративное управление и стратегия
- 5.7 Устройства NAS под управлением Windows и моментальные снимки
- 7.8 Управление иерархическим хранилищем
- Управление файлами занятий
- Управление пользователями и разрешениями узла
- Управление функциями узла
- Управление объединением содержимого узлов
- Использование панели задач Управление документами в приложениях Office 2007