Каков наилучший способ сравнения больших объемов данных между двумя разными базами данных? - PullRequest
1 голос
/ 25 февраля 2011

У меня есть одно настольное приложение, которое получает данные от веб-службы и хранит их в локальной базе данных postgresql (в то время как веб-служба получает данные из базы данных SQL Server). В конце этого процесса в моей локальной базе данных будет минимум 2,5 миллиона записей в таблице, но это будет получено от веб-службы de в пакетах по 300 строк одновременно и в течение 15 дней.

Мне нужен способ убедиться, что моя локальная база данных содержит ту же информацию, что и база данных сервера.

Я думаю о создании некоторой контрольной суммы для каждой полученной партии, а затем, после получения всех партий, еще одной контрольной суммы всей таблицы, но я не знаю, является ли это лучшим решением, и, если есть, я Не знаю, с чего начать.

PS: TCP уже выполняет проверку целостности, поэтому я даже не знаю, нужно ли это, но важно, чтобы данные были одинаковыми.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Я вижу, как контрольная сумма может , возможно, быть полезной, но количество преобразований, которые вы делаете, вероятно, сделает ее непрактичной.Вы должны получить контрольную сумму либо в исходной форме данных, либо в преобразованной форме;это не будет справедливо в обоих случаях.

У вас есть некоторые странные ограничения (я был там сам), поэтому сложно придумать четкую стратегию, не зная всех деталей.Возможно, подойдет одно из следующих предложений:

  1. Простой подсчет (*) на стороне SQL Server и на стороне PostgreSQL после завершения миграции.

  2. Выведите список ключей со стороны SQL Server и со стороны PostgreSQL после завершения миграции, а затем отсортируйте и сравните эти файлы.

  3. Если 1 и2 не возможны из-за ограниченного доступа к SQL Server, возможно, выгрузите результаты вызовов веб-службы в одно местоположение файла, а затем извлеките те же данные из PostgreSQL в конце и сравните эти файлы.

Существует множество инструментов для сравнения файлов, если вы выберете варианты 2 или 3.

0 голосов
/ 25 февраля 2011

У вас есть контроль над веб-службой и базой данных SQL Server? Если вы это сделаете, отслеживание изменений SQL Server должно сделать свое дело. MSDN Отслеживание изменений будет отслеживать каждое изменение (или только те изменения, которые вам нужны) для каждой таблицы. Каждый раз, когда вы синхронизируете, вы просто передаете ему свой номер версии, и он вернет набор изменений, необходимый для того, чтобы вы были в курсе.

...