Генерация скрипта создания базы данных с учетом зависимостей

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