Существуют ли общие параметры для управления версиями в базе данных?

StackOverflow https://stackoverflow.com/questions/2411791

Вопрос

У меня есть небольшой опыт использования SVN в моих проектах разработки, и у меня так же мало опыта работы с реляционными базами данных.Я знаю основные понятия, такие как таблицы и инструкции SQL, но я далек от того, чтобы быть экспертом.

Что я хотел бы знать, так это существуют ли какие-либо универсальные системы типа контроля версий, такие как SVN, но которые работают с базой данных, а не с файлами.Я бы хотел иметь те же функции, которые вы получаете с SVN, такие как возможность создавать ветви, создавать теги и объединять ветви вместе.Вместо того, чтобы номер редакции был связан с версией файлового хранилища, он был бы связан с версией базы данных.

Доступны ли у них какие-либо общие решения, которые могут добавить такого рода функциональность независимо от фактической схемы базы данных?Меня бы заинтересовали решения, которые работают с MySQL или MS SQL Server.

Я должен также уточнить, что я пытаюсь контролировать версии данных, а не схемы.Я бы ожидал, что схема останется постоянной.Так что на самом деле кажется, что мне нужен способ создать журнал всех запросов на ВСТАВКУ, ОБНОВЛЕНИЕ и УДАЛЕНИЕ, отправленных в базу данных между каждой версией данных.Таким образом, любая версия может быть воссоздана путем повторной отправки всех инструкций SQL, которые были сохранены до нужной версии.

Это было полезно?

Решение

Вы можете записать весь ваш DDL, хранимые процедуры и тому подобное в обычные текстовые файлы.

Тогда вы можете просто использовать SVN для управления версиями базы данных.

Другие советы

Я никогда не находил решения, которое работало бы так же хорошо, как Subversion, но вот несколько вещей, которые я сделал, которые помогли:

  1. Создайте скрипты, которые создадут схему и заполнят любые исходные данные.Затем создайте сценарий обновления для каждого изменения после этого.Это довольно ручной процесс, но он работает.Есть дополнительные вещи, которые помогают, например, сохранить номер текущей версии в таблице в базе данных и убедиться, что скрипты идемпотентный.

  2. Храните полную базу данных разработки в Subversion.Обычно у меня это получается не слишком хорошо, если данных много или они часто меняются.Но в некоторых проектах это могло бы сработать.

Я сохраняю и поддерживаю скрипты создания в своей системе контроля версий.

Есть две вещи, о которых я могу подумать:

  • http://www.liquibase.org/ - предоставляет способ общего управления изменениями базы данных.Создает файлы, которые передаются в систему управления версиями, и это помогает управлять изменениями в различных базах данных разработки и т.д.
  • http://www.viget.com/extend/backup-your-database-in-git/ - здесь описывается стратегия резервного копирования базы данных в систему управления версиями, но та же стратегия может быть использована только для схемы.В этой схеме база данных будет находиться в отдельной области от вашего основного кода.(Это можно использовать и с другими системами управления версиями.)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top