Мартин Фаулер написал мою любимую статью на эту тему, http://martinfowler.com/articles/evodb.html. Я предпочитаю не помещать дампы схемы под контроль версий, как alumb , и другие советуют, потому что я хочу простой способ обновить мой производственная база данных.
Для веб-приложения, в котором у меня будет один экземпляр производственной базы данных, я использую два метода:
Сценарии обновления базы данных
Последовательность сценариев обновления базы данных, содержащая DDL, необходимый для перемещения схемы из версии N в N + 1. (Они идут в вашей системе контроля версий.) Таблица _version_history_, что-то вроде
create table VersionHistory (
Version int primary key,
UpgradeStart datetime not null,
UpgradeEnd datetime
);
получает новую запись при каждом запуске сценария обновления, соответствующего новой версии.
Это позволяет легко увидеть, какая версия схемы базы данных существует, и что сценарии обновления базы данных запускаются только один раз. Опять же, это , а не дампов базы данных. Скорее, каждый скрипт представляет изменения , необходимые для перехода от одной версии к другой. Это сценарий, который вы применяете к своей производственной базе данных, чтобы «обновить» ее.
Синхронизация в изолированной программной среде разработчика
- Скрипт для резервного копирования, очистки и сжатия рабочей базы данных. Запускайте его после каждого обновления производственной базы данных.
- Скрипт для восстановления (и настройки, при необходимости) резервной копии на рабочей станции разработчика. Каждый разработчик запускает этот сценарий после каждого обновления производственной БД.
Предупреждение: мои автоматизированные тесты выполняются для базы данных с корректной схемой, но пустой, поэтому этот совет не будет полностью соответствовать вашим потребностям.