Якщо дані, які ви плануєте перенести, наразі погані, їх потрібно виправити, чи ви робите міграцію чи ні. Неправильні дані = марні дані.
Міграція ризикована, це правда. Але так є у кожного великого ІТ-проекту. Існують способи зменшити ризик, і їх, безумовно, слід планувати наперед в рамках міграції.
По-перше, у вас завжди повинен бути спосіб повернутися до системи, як зараз. Другі міграції слід робити на тестових серверах, які створені саме для міграції. Нерозумно робити міграцію, не маючи можливості перевірити її спочатку. По-третє, весь код для міграції повинен знаходитися у контролі джерела.
По-четверте, перед початком міграції потрібні вимоги та плани тестування. Вам потрібно знати, що якщо у вас було 1,293,687 записів у старій системі, у вас є те саме в новій або ви знаєте, куди вони пішли (можливо, до таблиці винятків). Якщо ви нормалізуєте денормалізовану схему, вам потрібно обчислити, скільки записів слід закінчити перед початком роботи, а потім перевірити це. Вам потрібна документація, яка визначає, що таке відображення однієї системи в іншу. Це допоможе вашим людям із забезпечення якості перевірити, чи надійшли дані в потрібне місце.
Вам потрібно визначити, як поводитися з поточними поганими даними. Що можна очистити, для чого може знадобитися значення в обов'язковому полі, на якому написано "Невідомо", що потрібно перекинути на таблицю винятків, що потребує вручну втручання групи користувачів (вирішення, чи справді ці двоє людей є копією або Чи є в цій практиці двоє лікарів з однаковою назвою, і якщо це дубль, які дані вибирати, коли дві записи відрізняються тощо).
Запорукою успішної міграції є планування. Я виявив, що планування (яке включає написання тестових випадків та тестових одиниць) зазвичай займає більше часу, ніж власне розробка.
Наступним ключем до успішної міграції даних є забезпечення якості. Це не проект, який потрібно кидати команді з контролю якості за день до запуску. Це не проект, який слід запускати, коли QA каже, що є проблема.
Ще одним ключем до успішної міграції є розгортання більшості даних та тестування їх, поки оргінальна система ще працює. Якщо ви переміщуєте багато записів, це може зайняти багато часу, і відбудуться нові зміни. Таким чином, ваш процес повинен мати можливість витягувати зміни даних і після початку міграції. Наприклад, у SQL Server є щось, що називається Змінити захоплення даних, що може допомогти у цьому. Ви можете зробити резервну копію початкової системи і одночасно ввімкнути захоплення змін. Тоді ви можете перенаправити резервну копію на міграційний сервер, протестувати міграцію, отримати більшість завантажених даних і тоді вам доведеться лише завантажити записи, які змінилися. Коли ви мігруєте остаточні записи, вимкніть вихідну систему, поки не буде виконана міграція. Це одна з причин передчасно перемістити більшість записів, тож програма не працює за найменший проміжок часу. Добре виберіть міграційний час, не закривайте систему оплати праці в день, коли вони повинні обробляти заробітну плату чи надсилати W2. І робіть це в години низького використання. Якщо у вас є кілька клієнтів, ви можете подумати про те, щоб перенести одного першого і переконатися, що все добре, перш ніж робити інші. Повернути дані одного клієнта набагато простіше, ніж 10000, якщо є проблеми. Але плануйте це уважно, якщо ви це зробите. s даних, ніж 10000, якщо є проблема. Але плануйте це уважно, якщо ви це зробите. s даних, ніж 10000, якщо є проблема. Але плануйте це уважно, якщо ви це зробите.
Якщо міграція передбачає новий інтерфейс користувача, будь ласка, дозвольте фактичним користувачам використовувати його як частину тестування на міграцію. Потім тренуйте інших користувачів, перш ніж виходити наживо (але менше тижня, перш ніж ви будете жити, або вони забудуть). Користувачі, які беруть участь у тестуванні, допомагають розробити навчання, вони знають, які питання у них виникали і що люди повинні знати, в якому порядку. Отримайте їх, зробивши поле необхідним, оскільки, на вашу думку, це не допоможе, якщо користувачі зазвичай не мають цих даних під час введення записів. Вони просто покладуть сміття в щойно необхідне поле, оскільки вони не зможуть отримати дані в іншому випадку.
Подивіться, що не так з поточними даними, чи можете ви додати сторонні ключі, обмеження, тригери, правила ведення бізнесу у програмі, значення за замовчуванням тощо, щоб уникнути цього в майбутньому погано? Коли ви чистите погані дані, вам також потрібно створити спосіб уникнути потрапляння подібних недоброзичливих даних у майбутньому. Проаналізуйте, чому погані дані були виділені, і виправте отвори в цілому дизайні.