Существуют ли общие параметры для управления версиями в базе данных? - PullRequest
5 голосов
/ 09 марта 2010

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

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

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

Я также должен уточнить, что я пытаюсь управлять версиями данных, а не схемы.Я ожидаю, что схема останется постоянной.Так что на самом деле мне кажется, что я хочу создать журнал всех запросов INSERT, UPDATE и DELETE, отправляемых в базу данных между каждой версией данных.Таким образом, любая версия может быть воссоздана путем повторной отправки всех операторов SQL, которые были сохранены до нужной версии.

Ответы [ 4 ]

1 голос
/ 09 марта 2010

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

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

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

1 голос
/ 09 марта 2010

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

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

0 голосов
/ 09 марта 2010

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

0 голосов
/ 09 марта 2010

Я могу придумать две вещи:

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