У меня есть приложение C#, которое работает с базой данных Oracle и уже отправлено. Теперь пришло время отправить новый выпуск. Объектная модель C# была пересмотрена и оказала влияние на структуру таблицы.Перенос базы данных Oracle с приложенным к ней приложением C#: как управлять миграцией базы данных?
Если я отправляю новый выпуск, мне нужно позаботиться о существующих данных. Просто отбрасывать таблицы и воссоздавать эти таблицы не сделало бы клиентов счастливыми.
Чтобы устранить эту проблему, я собрал SQL-скрипты, которые изменят ранее выпущенную структуру базы данных на новую структуру базы данных. В ходе этого также переносятся данные. Сценарии SQL привязаны к репозиторию, подобному исходному коду C#. Патч базы данных тестируется на регулярной основе с помощью CruiseControl.NET. Тесты NUnit выполняются против исправленной базы данных, чтобы выявить несоответствия между таблицами базы данных и объектной моделью C#.
Вся процедура работает, но у меня есть ощущение, что это можно сделать лучше. Я считаю миграцию базы данных очень критичной. Отгруженное приложение, которое не работает с неправильно исправленной базой данных, не имеет значения. Потеря данных неприемлема. Эти сценарии ужасов могут заставить меня думать, чтобы вообще не менять базу данных. Поэтому для меня очень важно полностью доверять инструментам и методам, которые я использую.
На прошлой неделе я споткнулся LiquiBase и я спросил себя - а теперь в SO:
Какие инструменты или методы могут помочь сделать миграцию базы данных с меньшими рисками и больше доверия? Есть ли хорошие книги или интернет-ресурсы?
Меня особенно интересуют конкретные решения для C# и Oracle, которые могут вписываться в процедуру разработки, описанную выше.