Существует множество различных способов и решений, чтобы хранить изменения в БД и управлять ими. Важно найти наиболее приемлемый подход и применить подходящий инструмент, который поможет вам повысить степень автоматизации версионной миграции БД, повысить качество и надежность вашей работы, сэкономить ресурсы и время сотрудников. В прошлой статье я постарался на жизненном примере рассказать, откуда возникают проблемы управления изменениями БД, какие трудности это создает, и какие выводы можно сделать на базе этого, по большому счету, негативного опыта.
Как правило, для успешного внедрения технологий версионной миграции БД желательно иметь инструментальные средства, которые облегчают и автоматизируют выполнение следующих задач:
- Обновление БД с конкретной версии на любую другую за один шаг, как на более позднюю, так и возврат к предыдущей;
- Легкое получение скриптов миграции в автоматическом режиме, с возможностью «ручного» внесения исправлений в крайнем случае;
- Создание «с нуля» нового экземпляра БД, соответствующего имеющейся версии приложения;
- Простое создание тестовых/девелоперских экземпляров БД на базе актуальных рабочих БД для ведения разработки на них, которые максимально соответствуют этим рабочим.
- Контроль и аудит нежелательных изменений в экземплярах БД, при необходимости автоматический возврат к эталонному состоянию в сжатые сроки.
Уже упоминалось, что версионный подход не очень эффективно применять без использования каких-либо инструментальных решений. Посмотрим, как можно решить эти задачи с помощью DB Change Manager компании Embarcadero. Это утилита для администраторов БД и разработчиков баз данных позволяет упростить и автоматизировать внесение изменений в базы данных и создавать отчеты об изменениях. DB Change Manager обеспечивает согласованность БД, соблюдение норм и конфиденциальность данных.
Концепция работы утилиты основывается на операциях сравнения и «архивирования». DB Change Manager позволяет анализировать и сравнивать элементы БД, взятые из двух различных источников данных. Он генерирует SQL-скрипт, с помощью которого один источник данных будет изменен так, чтобы он совпадал с другим.
Все операции выполняются в виде отдельных «заданий». Задания используются для организации повторно используемых процессов. Задание может быть выполнено по директиве пользователя или сохранено на диск, чтобы быть запущенным по расписанию в пакетном режиме из командной строки.
Для повышения уровня автоматизации все задания могут сообщать о результатах работы по e-mail, в системные логи, либо сообщениями в системной области нотификаций.
После выполнения задания сравнения DB Change Manager может сгенерировать SQL-скрипт синхронизации для внесения изменений в целевые данные, конфигурации или схемы. Перед запуском скрипта имеется возможность внести в него изменения.
Для удобства работы и навигации задания и скрипты можно объединять в проекты. Предусмотрен доступ к файлам системы управления исходным кодом.
Для решения поставленных выше задач следует применить комбинацию заданий нескольких типов. Задания могут относиться к одной из возможных областей изменений в БД:
- Изменения в конфигурации: получить настройки конфигурации для источника данных, зафиксировать начальное состояние или архив конфигурации и затем анализировать происходящие изменения. Вы можете создать стандарт конфигурации, определяющий нормы для вашего предприятия, с которым вы затем сможете сравнивать ваши базы данных.
- Изменения в структуре БД: DB Change Manager позволяет считывать и сравнивать схемы различных баз данных. В течение жизни отдельной схемы вы можете зафиксировать ее начальное состояние (или архив схемы) и затем анализировать происходящие с ней изменения. Кроме того, DB Change Manager генерирует SQL-скрипт, который позволяет внести изменения в целевую схему таким образом, чтобы она соответствовала эталону.
- Изменения в данных: DB Change Manager позволяет анализировать и сравнивать данные, взятые из двух различных источников данных. Он генерирует SQL-скрипт, с помощью которого, один источник данных будет изменен так, чтобы он совпадал с другим.
Поскольку все операции синхронизации происходят через сравнение, необходимо иметь эталон для сравнения (baseline). На разных этапах жизни БД эталоном могут выступать различные версии или «живая» БД. Чтобы сохранить очередную версию нужно запустить задание для создания архива с текущего состояния БД.
Обновление БД с конкретной версии на любую другую за один шаг
Допустим, имеется БД, это может быть рабочая или какая-то другая версия (версия 0). Какая-то заботливая душа (по крайней мере, аккуратная и ответственная) позаботилась о том, что существует сохраненная версия структуры БД, назовем ее «архив N»
Как получить эту версию? Для получения версий-архивов в DB Change Manager следует создать и выполнить задание «архивации». Это задание сможет сохранять в репозиторий очередную версию структуры БД.
Допускается включение в такую серию версий-архивов не всех метаданных, а только выделенных пользователем. В примере выше был указан единственный владелец, объекты которого будут сохранены при архивации – GIM. Также можно указать, какого рода объекты будут включены в архив.
Интересно, что у архивов-версий может быть задано «время жизни» — по истечении какого срока хранения версия будет удалена.
Для сравнения текущей БД и указанной версии (в примере ниже – это самая последняя сохраненная версия) также нужно иметь задание Schema Comparison, которое создается практически так же, как и другие типы заданий. Следует указать в качестве источника для сравнения «архив N», а в качестве цели – просто перетащить из навигатора источников данных источник, соответствующий требуемой БД. В опциях задания можно сделать выбор между автоматической или «ручной» синхронизацией. Задание можно выполнить сразу из интерактивной среды или из командной строки.
В результате структура базы данных будет переведена в состояние, соответствующее требуемой версии, — автоматически или будет сгенерирован скрипт синхронизации.
Легкое получение скриптов миграции в автоматическом режиме
Когда создается задание, есть возможность указать необходимые настройки выполнения сравнения. Прежде всего, указать режим синхронизации: автоматический или вручную. Можно настроить набор объектов, которые будут включены в скрипт синхронизации (Include Objects Options). Имеется широкий набор настроек выполнения сравнения объектов. Есть настройки обработки параметров файловой системы БД, идентификаторов, и др.
После выполнения задания в интерактивном режиме отчет о детальных результатах сравнения можно увидеть в специальном окне.
По каждому из сравниваемых объектов результат сравнения отражен в статусе. Когда объектов очень много, фильтрация становится необходимой. Оставляя отмеченными только нужные флажки, мы сокращаем количество видимых объектов и даем возможность лучше сконцентрировать внимание.
Существуют ситуации, когда необходимо явно указать направления синхронизации. Допустимо задавать синхронизацию от исходного источника данных к целевому для большинства объектов, и в обратном направлении для некоторых. Можно вообще исключить ряд объектов из процедуры синхронизации.
Кнопка ‘Generate A Sync Script’ автоматически создаст скрипт синхронизации, который откроется в окне ISQL – редактора.
Вы можете вносить изменения в SQL-скрипт и выполнять его по мере необходимости.
Если была выбрана автоматическая синхронизация, можно задать сохранение сгенерированного в ходе процесса скрипта в указанный каталог на диске или внешний носитель.
Создание «с нуля» нового экземпляра БД, соответствующего имеющейся версии приложения
Теперь должен быть понятен путь для создания нового экземпляра БД на базе архива какой-либо версии.
Надо создать задание синхронизации схемы, указать в качестве источника архив-версию, а целью – «живой» сервер. Единственная тонкость – в том, что на этом сервере заранее нужно создать соответствующего «владельца» схемы. Выполнение этого задания даст скрипт для создания нового экземпляра.
Очень удобно, что DB Change Manager может мигрировать схемы не только на одинаковые СУБД, но и на разные платформы, например: Oracle – SQL Server, Sybase – SQL Server, Firebird-Interbase. В этих случаях разумным будет держать этот процесс под контролем, а не стараться выполнять миграцию в полностью автоматическом режиме, поскольку полностью однозначного соответствия объектов одной СУБД другой добиться невозможно.
Кстати, в качестве целевого источника данных можно указать не один, а несколько разных. В этом случае, задание создаст соответствующее количество синхронизационных скриптов.
Простое создание тестовых/девелоперских экземпляров БД на базе актуальных рабочих БД
DB Change Manager облегчает создание «стендовых» экземпляров БД, предназначенных для тестирования и разработки. Особенность таких экземпляров в том, что они не должны полностью дублировать рабочие БД в части объема и данных, но одновременно должны быть идентичными по составу объектов схемы. Кроме того, в такие БД, часто размещаемые вне зоны безопасности компании – у сторонних разработчиков, например, нельзя переносить охраняемые данные. Сценарий создания таких «стендовых» экземпляров БД состоит из двух шагов:
- создание с нуля новой БД, на основе существующей рабочей или любой нужной версии, как описано в пункте выше. Достаточно переноса только схемы.
- сравнение данных; создается задание, в котором указывается необходимое подмножество переносимых данных, охраняемые элементы данных и алгоритмы их маскирования. В результате выполнения этого задания данные либо непосредственно переносятся в новый экземпляр, либо создаются скрипты для дальнейшего пакетного выполнения.
Контроль и аудит нежелательных изменений в экземплярах БД, при необходимости автоматический возврат к эталонному состоянию в сжатые сроки
Создав набор нужных заданий и расписание для их автоматического выполнения можно проводить регулярные плановые проверки, создание очередных новых версий или возврат к эталонному состоянию.
Управление конфигурацией БД
Помимо разницы в схемах, в рамках предприятия могут различаться настройки конфигурации. DB Change Manager позволяет получить настройки конфигурации для источника данных. Можно зафиксировать начальное состояние или архив конфигурации и затем анализировать происходящие изменения. Можно даже создать стандарт конфигурации, определяющий нормы для каждого предприятия.
Интеграция с системами управления исходными текстами
DB Change Manager самостоятельно создает и поддерживает версии архивов, но при необходимости можно выполнить интеграцию с системами управления исходным кодом, такими как Concurrent Versions System (CVS, система параллельных версий), Visual Source Safe (VSS, система управления версиями программного кода) или подключаемые модули Eclipse. Navigator в DB Change Manager предоставляет интерфейс для доступа к файлам, находящимся под контролем системы управления исходным кодом. Все действия по управлению исходным кодом могут быть выполнены через систему управления исходным кодом.
Заключение
В этой краткой статье, я надеюсь, мне удалось познакомить всех с DB Change Manager, с его уникальными возможностями работать единым образом со многими платформами СУБД, высоким уровнем автоматизации выполнения всех задач и широким набором функций на трех уровнях: схем БД, конфигурации серверов СУБД и собственно данных, для решения этих задач.
- Обновление БД с конкретной версии на любую другую за один шаг решается при помощи задания сравнения схем. Сами версии структур могут быть автоматически получены с помощь регулярного выполнения заданий архивации схем.
- Легкое получение скриптов миграции в автоматическом режиме, с возможностью «ручного» внесения исправлений в крайнем случае – все задания сравнения предоставят соответствующие скрипты синхронизации версий (в одном или обоих направлениях) автоматически или с помощью нажатия одной кнопки.
- Создание «с нуля» нового экземпляра БД, соответствующего имеющейся версии приложения – решается путем выполнения задания сравнения архива-версии с желаемым сервером БД.
- Простое создание тестовых/девелоперских экземпляров БД на базе актуальных рабочих БД для ведения разработки на них, которые максимально соответствуют этим рабочим. Решаем путем создания нового экземпляра БД на основе реальной БД (а не версии) и затем выполнения задания сравнения-миграции данных.
DB Change Manager является решением, упрощающим и ускоряющим управление изменениями в БД. Помимо версионной миграции БД, эта утилита облегчает контроль и аудит нежелательных изменений в экземплярах БД, при необходимости автоматический возврат к эталонному состоянию в сжатые сроки. DB Change Manager сопровождает ваши действия по управлению данными уведомлениями о выполнении процессов, отчетами, собирающими ключевую информацию, и формированием истории изменений.
Автор: sandy97