Существует ли система контроля версий для изменения структуры базы данных? - PullRequest
117 голосов
/ 02 августа 2008

Я часто сталкиваюсь со следующей проблемой.

Я работаю над некоторыми изменениями в проекте, которые требуют новых таблиц или столбцов в базе данных. Я делаю модификации базы данных и продолжаю свою работу. Обычно я не забываю записывать изменения, чтобы их можно было реплицировать в действующей системе. Тем не менее, я не всегда помню, что я изменил, и я не всегда помню, чтобы записать это.

Итак, я нажимаю на работающую систему и получаю большую, очевидную ошибку, что NewColumnX, тьфу.

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

Ответы [ 22 ]

2 голосов
/ 26 сентября 2008

Я бы рекомендовал один из двух подходов. Во-первых, инвестируйте в PowerDesigner от Sybase. Enterprise Edition. Это позволяет создавать физические модели данных и многое другое. Но он поставляется с хранилищем, которое позволяет вам проверить ваши модели. Каждая новая регистрация может быть новой версией, она может сравнивать любую версию с любой другой версией и даже с тем, что находится в вашей базе данных в то время. Затем он представит список всех различий и спросит, какие из них следует перенести ... и затем создаст сценарий для этого. Это не дешево, но выгодно в два раза дороже, а рентабельность инвестиций составляет около 6 месяцев.

Другая идея - включить аудит DDL (работает в Oracle). Это создаст таблицу с каждым внесенным вами изменением. Если вы запросите изменения из отметки времени, когда вы в последний раз перемещали изменения базы данных в prod прямо сейчас, у вас будет упорядоченный список всего, что вы сделали. Несколько предложений where для исключения изменений с нулевой суммой, таких как create table foo; с последующей дроп-таблицей foo; и вы можете легко построить сценарий мода. Зачем хранить изменения в вики, это удваивает работу. Позвольте базе данных отследить их для вас.

1 голос
/ 22 сентября 2008

Две книжные рекомендации: «Рефакторинг баз данных» от Ambler и Sadalage и «Agile Database Techniques» от Ambler.

Кто-то упомянул Rails Migrations. Я думаю, что они отлично работают, даже за пределами приложений Rails. Я использовал их в приложении ASP с SQL Server, которое мы перешли на Rails. Вы проверяете сами скрипты миграции в VCS. Вот пост от Pragmatic Dave Thomas на эту тему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...