Поддержание схемы базы данных в актуальном состоянии - PullRequest
2 голосов
/ 03 августа 2011

Я пишу приложение, которое использует базу данных (в настоящее время MySQL 4) для хранения данных.

Вполне вероятно, что позже я внесу изменения в форме обновлений, чтобы добавить дополнительные данные. Обновление приложения простое, оно сводится к перезаписи файлов программы новыми. Но как мне обновить схему базы данных?

База данных является удаленной, и поэтому мое приложение может существовать в нескольких местах, поэтому простой вывод операторов ALTER и CREATE в установщик приведет к многократным изменениям, и меня явно попросили об автоматическом решении, которое позволяет для копий приложения, которые будут обновлены в течение переходного периода, и для автоматических обновлений схемы.

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

Ответы [ 3 ]

5 голосов
/ 03 августа 2011

Я очень рекомендую Liquibase .Это действительно работает - я использовал его и был очень впечатлен.

По сути, он ведет собственный журнал операторов, выполняемых в базе данных, и запускает их, только если они еще не выполнялись / нужны.Он управляется XML и позволяет вам использовать необязательные операторы и условия до и после выполнения.Вы проверяете свои XML-файлы в вашем контроле исходного кода и вызываете его из вашего инструмента сборки.Он даже подходит для выпуска серийных релизов.

Это волшебство.

5 голосов
/ 03 августа 2011

Вместо того, чтобы использовать собственную систему для управления версиями вашей базы данных, вероятно, стоит поискать существующую инфраструктуру, которая будет управлять ею за вас.

Я использую liquibase и интегрировал в мою сборку с помощью плагина maven. Стоит проверить!

0 голосов
/ 03 августа 2011

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

...