Чек-лист миграции хранилища данных
Миграция хранилища почти никогда не сводится к переносу таблиц. Основные риски лежат в зависимостях, о которых никто не помнит, и в расхождениях данных, которые обнаруживаются уже после переключения отчётности. Ниже — порядок работ, который мы используем как отправную точку.
1. Инвентаризация
Соберите полный список объектов: таблицы, представления, процедуры, регламентные задания, внешние выгрузки. Для каждого объекта зафиксируйте владельца, источник, частоту обновления и потребителей. Лучший источник правды — журнал запросов за последние 2–3 месяца: он показывает, что используется на самом деле.
- объекты без обращений за квартал — кандидаты на вывод из эксплуатации, а не на перенос;
- ручные выгрузки в Excel и письма по расписанию — отдельный список, их чаще всего забывают;
- учётные записи сервисов, которые ходят в хранилище напрямую.
2. Контракт данных
До начала переноса договоритесь о типах, кодировках, часовых поясах и правилах округления. Различия в работе с NULL, пустыми строками и временными метками — самая частая причина расхождений между старой и новой платформой.
3. Сверки
Сверка строится на трёх уровнях: количество строк, контрольные суммы по ключевым показателям и выборочная сверка записей. Пример контрольного запроса:
SELECT report_date,
count(*) AS rows_cnt,
sum(amount) AS amount_sum,
count(DISTINCT client_id) AS clients
FROM mart.sales_daily
WHERE report_date >= current_date - 30
GROUP BY report_date
ORDER BY report_date;
Одинаковый запрос выполняется на обеих платформах, результаты сравниваются автоматически. Допустимые отклонения фиксируются заранее, а не во время приёмки.
4. Параллельный прогон
Минимум один полный отчётный цикл — обычно месяц — старая и новая платформы работают одновременно. Пользователи ключевых отчётов получают доступ к новой версии и подтверждают совпадение цифр.
5. Переключение и откат
План отката пишется до переключения: сколько времени старая платформа остаётся в режиме только чтения, как вернуть потоки загрузки, кто принимает решение. Переключать лучше в начале недели, а не перед закрытием периода.