Версия для базы данных - Как работает филиал коммутации?

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

Вопрос

Это вопрос для тех из вас, что вы работаете в команде Devs, где у всех вас у всех вас есть отдельные базы данных. Вы подтверждаете вашу базу данных с использованием контроля источника и другие инструменты, которые автоматически приведут базы данных DEV в соответствии с последней версией базы данных (схема, данные, SP, функции и т. Д.).

Ок, отлично! Но ждать! Что если вы разрабатываете на версии 4.0 вашего программного обеспечения, но теперь вам нужно переключать ветки на ветку 3.2, чтобы исправить ошибку? Схема может быть (почти уверенно есть), очень иначе ...

Полагаю, что если вы проходили дополнительные усилия, чтобы написать сценарии отката вместе с вашими сценариями изменения, это может работать. Но это кажется много работы - это действительно стоит того?

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

Решение

Гораздо легче было бы создать новую базу данных 3.2-филиала и работать с этим, работая над кодом 3.2-филиала. Мне кажется разумным для того, чтобы у каждого разработчика именно одна база данных для работы.

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

Я иду на конечности и предполагаю, что вы версили в базу данных в качестве двоичного? Если все ваши активы в базе данных были в форме конструктивного кода (например, SQL-скрипты и / или отвалы текстовых данных), решение было бы простым, как предложено Mark: храните эти активы как часть филиала разработки. Чтобы работать на версии 3.2, переключите ветку, повторно запустите сценарии Create Scripts и Presto, 3.2. Объединение было бы так же легко, как и с обычным кодом (или так же болезненным, в зависимости от вашей системы управления версиями).

Вот несколько предложений для работы в этом режиме:

  • Если создание экземпляров базы данных из текста слишком медленно, сделайте кэш на общий объем диска, ключ от содержимого всех файлов схемы / данных (или его суммой MD5).
  • Напишите предварительный коммитский крюк, чтобы убедиться, что схема и дампы данных в экземплярах разработчика такие же, как под контролем версии. Это мешает людям внести изменения в свою DEV базу данных с помощью интерактивного инструмента, а затем забыть об этом.
  • Вы упоминаете изменения сценариев; относиться к ним как ответственность. Хотя они могут потребоваться вашим сценарием развертывания (например, для клиентов, которые хотят обновить на месте), они дублируют информацию из истории версии базы данных, а законодательство о законе Murphy означает десинхронизацию рано или поздно. Попробуйте автоматически генерировать сценарии изменений из версией активов баз данных, используя «Diff»; Или если это не может быть достигнуто, посвятите некоторые серьезные модульные тесты на модернизацию баз данных.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top