Генерация скрипта создания базы данных с учетом зависимостей Автор : Максим Масунов, 545 группа Санкт - Петербургский государственный университет Математико - Механический факультет Кафедра системного программирования Научный руководитель : Графеева Н. Г. Рецензент : Помыткина Т. Б.
Проблема Скрипты разложены по разным файлам Скрипты находятся в одном текстовом файле Table1.sql Tables.sql Table1.sql Views.sql Table1.sql Triggers.sql DataBase.sql
Создание скрипта с учетом зависимостей DataBase Application Script.sql
Существующие инструменты Aqua Data Studio* EMS SQL Manager Advanced Query Tool * UDB Workbench Toad for DB2 freeware -Tables Views Aliases Sequences Indexes Triggers Procedures Functions User Datatypes Зависимости Патчи Freeware ----+
Алгоритм создания объектов Создание графа зависимостей Порядок создания объектов Поиск зависимостей Топологическая сортировка Проверка ацикличности Обход графа с выводом результата
Порядок создания объектов Пользовательские типы Таблицы Встроенные процедуры, функции, представления … Индексы … … …
Поиск зависимостей Функция _ 1 Процедура _1 Процедура _3 Процедура _ 2 Представление _3 Независимые объекты 1-й уровень зависимости 2-й уровень зависимости k -й уровень зависимости
Проверка на ацикличность Процедура _1 Процедура _2 Процедура _3
.NET DB2 UDB Решение GUI DLL Скрипт создания всех объектов с учетом зависимостей
Задача, часть 2 Синхронизация SQL- схем DataBase.sql Update Revision 58 Revision 59
Средствами контроля версий Не всегда удобно Сравнивают строки, а не объекты Не создают скрипта, а лишь показывают различия Может не понять, если поменять местами два текстовых блока без обрамляющих\n.
Приложить резервную копию Могут быть различные данные Например, пользователи Sample 22 таблицы по записей Резервная копия заняла 102 Мб
.NET Решение DB2 GUI DLL Новая SQL- схема в XML формате Скрипт - патч
Изменение схемы таблиц Переименование колонок Изменение размера колонок Изменение типов колонок и приведение существующих данных к новому типу, используя встроенные скалярные функции Изменение точности Изменение значений по умолчанию Изменение NULL/NOT NULL Удаление колонок
Отличие от существующих Для создания патча не требуется подключения к обеим базам данных Достаточно файла с новой схемой и подключения к базе данных со старой схемой Скрипт может быть выполнен, так как объекты выстроены в порядке, учитывающем зависимости Код приложения полностью открытый
Результат Проведено сравнение с существующими инструментами Разработан алгоритм создания объектов с учетом зависимостей Разработан алгоритм создания патчей Реализована программная система Работает на платформе.NET 3.5 Использует DB2 Universal DataBase v 9.5
Спасибо за внимание ! Вопросы ?