Константин Зайцев Гость
|
Добавлено: Пт Окт 11 2002 16:29 Заголовок сообщения: Проверка правельности миграции данных из старой системы в новую |
|
|
Моя фирма писала проект для создания и миграции данных для одной коммерческой организации. Мне была поставлена задача, смысл которой состоял в проверки правильности миграции данных из старой системы в новую. Старая база данных писалась очень давно и разными программистами в силу чего она построена “странно”, это слабо сказано. База данных содержит информацию о клиентах и всякой информации связанной с ними. Новая система конечно имеет уже другую архитектуру. Вся сложность заключалась в том, что некоторая информация имела “историю значения”, которая так же была важна. Саму миграцию делала другая группа программистов и делали они ее по таблично, т.е. из каждой старой таблицы они брали нужные поля и мигрировали их в новую базу данных. При этом старые идентификационные номера заменялись на новые и это также делалось для справочников. Т.е. я не мог использовать идентификационные номера. Понятное дело, что если бы я делал проверку так же, по таблично, то в случае ошибки миграции, я бы, также ошибся и не нашел ошибок. Т.е. оставалось только одно, проверка ВСЕЙ логической записи. Но при этом возникала другая очень серьезная проблема. Если собирать всю логическую запись, то получается на одного клиента n-количество записей, из-за истории значения не которой информации, из-за чего время проверки было неимоверно большим. А если собирать всю логическую запись, что бы на каждого клиента получалось по одной записи, то нужно было отбрасывать историю значения. Тогда я придумал следующий способ. Все данные, по всем таблицам, которые не являлись датой, временем или числовой информацией, я выгрузил в отдельные маленькие таблицы, исключив повторяющиеся значения, и пронумеровал их по порядку (эти таблицы я буду называть ВСПОМОГАТЕЛЬНЫМИ). (Дальнейшие действия производились на копии старой базы данных) В этих таблицах я заменил все значения на порядковые номера из вспомогательных таблиц. Например, у некоторых организаций менялись контактные персоны, но при этом информация о предыдущих контактных персонах оставались. Все уникальные имена и фамилии, контактных лиц, я выгрузил в две вспомогательные таблицы, т.е. в одну имена в другую фамилии, и пронумеровал по порядку (в данном примере я описываю только одну таблицу, в реальности тоже самое я сделал с остальными таблицами). После этого в основной таблице, я заменил все символьные значения на соответствующие порядковые номера. После чего, если у какой-нибудь организации, было несколько контактных лиц (т.е. история значения), я просуммировал значения порядковых номеров построчно. После чего числовые значения перевел в символьные и соединил. Получилось, что на каждую организацию, в каждой таблице, имелось только одна строка с одним столбцом! Но в этой строке так же содержалась история значения! Например, |------------------------------------------| |------------------------------------------| | ID_Org | Имя | фамилия | | ID_Org | Имя | фамилия | | 1 | Владимир ... |
|