2010-09-10 8 views
1

Это вопрос для тех из вас, кто разрабатывает команду разработчиков, где у вас есть отдельные базы данных. Вы управляете версией своей базы данных с помощью источника управления и других инструментов, которые автоматически обновляют базы данных разработчиков до последней версии базы данных (схема, данные, SP, функции и т. Д.).Реализация баз данных - Как работает коммутация филиалов?

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

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

ответ

1

Намного легче было бы создать новую базу данных с 3,2-ветками и работать с ней при работе с кодом 3.2-ветвления. Мне не кажется разумным требовать, чтобы у каждого разработчика была только одна база данных для работы.

0

Я иду на конечность и предполагаю, что вы управляете версией базы данных как двоичный файл? Если все ваши активы базы данных были в форме конструктивного кода (например, сценариев SQL и дампов текстовых данных), решение было бы простым, как предположил Марк: хранить эти активы как часть ветви разработки. Чтобы работать с версией 3.2, переключите ветвь, запустите сценарии создания и базу данных presto, 3.2. Слияние было бы так же просто, как с обычным кодом (или столь же болезненным, в зависимости от выбранной вами системы контроля версий).

Вот несколько советов, чтобы работать в этом режиме:

  • При создании экземпляров базы данных из текста слишком медленно, сделать кэш на общий объем диска, шпонкой содержимым всей схемы/данных файлы (или сумму MD5).
  • Напишите крюк предварительной фиксации, чтобы убедиться, что схемы и дампы данных в экземпляре разработчика такие же, как те, что находятся под контролем версий. Это не позволяет людям вносить изменения в свою базу данных dev с помощью интерактивного инструмента, а затем забывает их совершить.
  • Вы упомянули сценарии изменений; относиться к ним как к ответственности. Хотя они могут потребоваться по вашему сценарию развертывания (например, для клиентов, которые хотят обновить их на месте), они дублируют информацию из истории версий базы данных, а в случае дублирования закона Мерфи рано или поздно подразумевается десинхронизация. Попытайтесь автоматически сгенерировать сценарии изменений из активов с версией базы данных с помощью «diff»; или если этого не может быть достигнуто, посвятите некоторые серьезные модульные тесты для обновления баз.