Если данные, которые вы планируете перенести, в настоящее время неверны, их необходимо исправить независимо от того, выполняете ли вы миграцию или нет. Плохие данные = бесполезные данные.
Миграции рискованны, это правда. Но так же каждый крупный ИТ-проект. Существуют способы снижения риска, и их, безусловно, следует планировать заранее при миграции.
Во-первых, у вас всегда должен быть способ вернуться к системе, какой она есть сейчас. Вторая миграция должна выполняться на тестовых серверах, которые настроены только для миграции. Глупо выполнять миграцию без возможности сначала проверить ее. В-третьих, весь код для миграции должен находиться в системе контроля версий.
В-четвертых, перед началом миграции вам нужны требования и планы тестирования. Вам нужно знать, что если в старой системе у вас было 1 293 687 записей, то же самое у вас в новой или вы знаете, куда они пошли (возможно, в таблицу исключений). Если вы нормализуете денормализованную схему, вам нужно посчитать, сколько записей вы должны получить до начала, а затем проверить это. Вам нужна документация, в которой указано, как соотносятся одна система с другой. Это поможет вашим специалистам по контролю качества убедиться, что данные отправлены в нужное место.
Вам необходимо определить, как обрабатывать текущие неверные данные. Что можно очистить, что может потребовать значение в обязательном поле с надписью «Неизвестно», что должно быть выброшено в таблицу исключений, что требует ручного вмешательства со стороны группы пользователей (решив, действительно ли эти два человека являются двойниками или например, есть ли в этой практике два доктора с одинаковыми именами, и если это дубликат, какие данные выбрать, когда две записи различаются и т. д.).
Ключ к успешной миграции - планирование. Я обнаружил, что планирование (которое включает написание тестовых случаев и модульных тестов) обычно занимает больше времени, чем фактическая разработка.
Следующий ключ к успешной миграции данных - QA. Это не проект, который бросают в команду QA за день до запуска. Это не проект для запуска, когда QA говорит, что есть проблема.
Еще одним ключом к успешной миграции является развертывание большинства данных и их тестирование, пока оригинальная система все еще работает. Если вы перемещаете много записей, это может занять много времени и произойдут новые изменения. Таким образом, ваш процесс должен быть в состоянии получить изменения данных после начала миграции. Например, в SQL Server есть что-то под названием Change Data Capture, которое может помочь с этим. Вы можете сделать резервную копию оригинальной системы и одновременно включить сбор данных об изменениях. Затем вы можете восстановить резервную копию на вашем сервере миграции, протестировать миграцию, загрузить большинство данных, а затем вам нужно только загрузить измененные записи. Когда вы переносите окончательные записи, выключите исходную систему, пока миграция не будет завершена. Это одна из причин перенести большинство записей заранее, так что приложение не работает меньше всего времени. Тщательно выбирайте время переноса, не закрывайте систему начисления заработной платы в день, когда они должны обработать начисление заработной платы или отправить W2s. И делать это в часы низкого использования. Если у вас есть несколько клиентов, вы можете сначала рассмотреть вопрос о миграции одного и убедиться, что все хорошо, прежде чем делать другие. В случае возникновения проблем откатить данные одного клиента намного проще, чем 10000. Но планируйте это тщательно, если вы делаете это. данные, чем 10000, если есть проблема. Но планируйте это тщательно, если вы делаете это. данные, чем 10000, если есть проблема. Но планируйте это тщательно, если вы делаете это.
Если миграция требует нового пользовательского интерфейса, попросите реальных пользователей использовать его как часть тестирования миграции. Затем обучите других пользователей, прежде чем вы начнете жить (но менее чем за неделю до того, как вы начнете жить, или они забудут). Попросите пользователей, участвующих в тестировании, помочь в разработке тренинга, они знают, какие вопросы у них были, и что люди должны знать в каком порядке. Получите их ввод, сделав поле обязательным, потому что вы думаете, что это не должно помочь, если пользователи обычно не имеют этих данных при вводе записей. Они просто поместят мусор в новое обязательное поле, потому что иначе не смогут получить данные.
Посмотрите, что не так с текущими данными, можете ли вы добавить внешние ключи, ограничения, триггеры, бизнес-правила в приложение, значения по умолчанию и т. Д., Чтобы избежать этого в будущем? Когда вы очищаете неверные данные, вам также необходимо создать способ избежать попадания столь же плохих данных в будущем. Проанализируйте, почему плохие данные были распределены, и исправьте дыры в дизайне.