Сценарии модификации базы данных - откат / откат Лучшая практика? - PullRequest
4 голосов
/ 10 мая 2011

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

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

Для отката, хранимых процедур, представлений, функций, триггеров, все программное легко откатить, просто примените предыдущую версию объекта.

Как вы упомянули, сложная часть возникает при обновлении / удалении записей из таблиц или даже при добавлении новых столбцов в таблицы. И вы правы в том, что в этом случае откат может быть столь же вероятным и неудачным.

Что мы делаем, если у нас есть изменение, которое не может быть легко отменено, но является чувствительным / критическим разделом ... это то, что у нас есть набор сценариев отката, которые также проходят через те же среды тестирования. Мы запускаем скрипт обновления, проверяем, что он работает должным образом, а затем запускаем скрипт отката и проверяем, что он работает так же, как и до модификации.

Еще одна вещь, которую мы делаем в качестве меры предосторожности, - это создание моментального снимка базы данных (SQL Server 2005) перед обновлением. Таким образом, если возникнут непредвиденные проблемы, мы можем использовать моментальный снимок для восстановления любых данных, которые могли быть утеряны во время обновления.

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

1 голос
/ 10 мая 2011

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

http://www.apexsql.com/sql_tools_diff.aspx

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