Как человек, который регулярно занимался обновлением производственной базы данных для клиентов для наших обновлений программного обеспечения, я говорю вам, что лучший способ минимизировать ошибки - это делать обновления как можно более простыми.
Если вы можете внести изменения во все записи, а не в конкретные записи, это предпочтительно.
Другими словами, если вам предоставляется список идентификаторов записей, для которых необходимо изменить их состояние, вы должны спросить себя, почему обновление выполняется в контексте программы. Возможно, из 10 записей, которые необходимо обновить, таблица содержит только 10 элементов. Поэтому вы должны спросить себя, концептуально ли все, что вы делаете, это обновляет состояние всех записей.
Если вы можете вставить, это предпочтительно.
Акт добавления записи является автономным. Под этим я подразумеваю только один побочный эффект от добавления записи - это существование записи, которой раньше не было. Поэтому, если вы не добавляете запись, которой не должно быть, проблем не должно быть.
Если вы можете избежать удаления, это предпочтительно.
Если вы выполняете удаление, вы удаляете данные, которые в противном случае были бы невозможно восстановить без резервного копирования. Если возможно, попытайтесь организовать данные таким образом, чтобы можно было отключить записи, изменив их состояние, а не физически удалив запись. Избыток данных можно поместить в раздел или полностью удалить в более поздний момент, если вы уверены, что проблем нет.
Имейте последовательную политику обновления.
Если вам нужно обновить запись, может произойти одно из нескольких:
- Ваша запись не существует.
- Ваша запись существует, но она уже была изменена.
- Ваша запись существует и требует изменений.
Вы должны иметь политику, чтобы определить курс действий, если что-то идет не так, как планировалось. Для простоты вы должны быть последовательными по всем направлениям и применять эту политику в любой ситуации такого типа, а не только для конкретных таблиц. Это облегчает возможность восстановления данных позже. Как правило, моя политика заключается в том, чтобы написать сценарий таким образом, чтобы иметь возможность выполнить его позже. В случае сбоя скрипта приятно знать, что вы можете внести коррективы и выполнить заново, однако вы можете выбрать собственную политику, которая подходит вам лучше всего.
Резервные копии
Это ни в коем случае не освобождает вас от выполнения резервного копирования перед выполнением любого обновления в производственной среде! Хотя даже с резервной копией, я считаю невозможным использовать резервную копию. Потеря данных не может быть возможной даже в худшем случае .
Вывод
Вы не всегда сможете сделать это по-своему. Схема таблицы вряд ли будет определяться вами, и поэтому она означает, что типы обновлений, которые вы можете ожидать, будут как сложными, так и рискованными. Хотя, если у вас есть какие-либо слова в этом вопросе, это помогает помнить эти моменты, поскольку они делают любые обновления прямо и без существенного риска.
Удачи!