Создание сценариев под управлением версиями и непрерывной интеграции для проверки их
Один подход, который работал для меня, заключался в том, чтобы каждый разработчик работал со своей собственной схемой, с которой он может делать то, что ему нравится. Их схема была разрушаема и заполнена тестовыми данными, взятыми из набора скриптов с управлением версиями, в который участвовали все разработчики.
Ночная непрерывная сборка интеграции взяла последнюю версию всех сценариев и попыталась создать из них связную тестовую базу данных. Затем приложение провело серию интеграционных и функциональных тестов, чтобы проверить, соответствует ли текущая схема текущему кандидату на выпуск.
Перед тем, как начать этот путь, существовал довольно солидный дизайн базы данных, и администратор БД всегда следил за тем, чтобы разработчики не сходили с ума от денормализации и других ужасов.
Здесь очень помог контроль версий, потому что изменения в скриптах были сразу очевидны. Мы также использовали VERSIONтаблицу базы данных для определения общего состояния базы данных. Это была простая целочисленная последовательность и не была связана с каким-либо конкретным приложением.
В целом, это работало хорошо и означало, что разработчики перестали бояться менять уровни персистентности, потому что они всегда могли откатить свои собственные схемы, не влияя на другие.