У нас много сред
trunk (интеграция с dev) -> devel (групповое тестирование) -> qa (регрессионное тестирование) -> live (использование пользователем)
Каждый имеет свою собственную базу данных, которая работает с кодом в этой среде.
Часть содержимого базы данных - это метаданные, а часть - данные. Например, если вы создаете отчет, то столбцы, из которых вы можете создать отчет, представляют собой метаданные, но отчеты, которые уже были созданы пользователем, являются данными. Метаданные перемещаются по цепочке продвижения (внедряются в транк и отправляются в devel-> qa-> live) вместе с кодом по мере его тестирования. Данные, однако, не продвигаются. Более того, данные в определенной среде не должны быть стерты или повреждены и продолжать работать после того, как эта среда была повышена.
Какие существуют хорошие стратегии для управления и, что не менее важно, автоматизации такой установки?
Мы используем .NET / C # / SQL Server, но я думаю, что эта проблема является общей и должна быть решена повсеместно для любого зрелого приложения, над которым работает большое количество разработчиков и которое заботится о пользователях данных генерировать на нем.