Каков стандартный или лучший способ справиться с ветвлением базы данных с помощью веток Mercurial или Git? - PullRequest
6 голосов
/ 25 марта 2010

Это был большой вопросительный знак в моей голове.

Я перехожу на Mercurial или Git очень скоро для своего веб-программного обеспечения, и иногда мои ветви требуют значительных изменений в базе данных, которые другие ветви не должны видеть. Поэтому я не всегда могу использовать одну и ту же базу данных для моих филиалов.

Есть ли какой-нибудь стандартный способ обработки изменений базы данных для ветвления и клонирования? Что вы все делаете? Я использую MySQL.

Ответы [ 4 ]

5 голосов
/ 25 марта 2010

Использование инструмента изменения базы данных может быть очень полезным. Я использовал liquibase (http://www.liquibase.org), на работе для управления контролем версий для БД. Я настоятельно рекомендую этот инструмент всем. Liquibase поддерживает наборы изменений с настраиваемыми сценариями отката. Однако это инструмент для управления схема, а не фактические данные. Я бы не стал использовать ее для обновления данных таблицы.

Тем не менее, я все еще чувствую, что вам лучше всего использовать ликвидазу и иметь разные схемы для разных исходных веток.

4 голосов
/ 25 марта 2010

У меня нет ответа для вас, но я натолкнулся на недавнюю статью, которая может иметь отношение к делу: Почему ваша стратегия управления версиями базы данных неудачна и что с этим делать, Часть I

2 голосов
/ 25 марта 2010

Для обработки клонирования ваша база данных должна быть многопользовательской.

Для изменений в схеме передайте изменения в схему для этой ветви как часть репозитория.

Тогда вы должны решить, для каждой схемы, вы запускаете несколько табличных пространств в одной базе данных, несколько баз данных и т. Д.? Затем зафиксируйте указатель на правильный как часть конфигурации установки в этой ветви.

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

Схема базы данных сама является записанной в базе данных, структура которой более или менее определяется INFORMATION_SCHEMA стандарта SQL.

Теперь СУБД спроектированы специально для того, чтобы в любой момент времени можно было использовать только одно значение базы данных. А поскольку сам каталог является «просто значением базы данных для базы данных INFORMATION_SCHEMA», системы SQL вполне сознательно поддерживают только одну единственную структуру базы данных в любой отдельный момент времени.

...