Как я могу определить разницу между двумя большими Набор данных?

У меня есть большие наборы данных с миллионами записей в формате XML. Эти наборы набора данных являются полными дамами данных базы данных до определенного момента времени.

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

Что было бы лучшим способом определить дельту между двумя из этих наборов данных (включая удаления и обновления)?


Мой план - загрузить все в RDBMS и уйти оттуда.

Сначала загрузите старый свалку. Затем загрузите более новую дампу в другую схему, но при этом я проверю, будет ли запись новой или является обновлением к существующей записи. Если да, я буду регистрировать идентификатор на новых таблицах (ых) под названием «изменения».

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

Предполагая, что просматривает запись по идентификатору - это работа O (log n) , это должно позволить мне сделать все в o (n log n) время.

Поскольку я могу определить разницу, глядя на наличие или отсутствие записей только с идентификатором и датой последней модификации, я также мог также загрузить все в основную память. Сложность времени будет такой же, но с добавленной пользой меньшего диска ввода / вывода, которое должно сделать это быстрее по порядку величины.

Предложения? (Примечание: это больше вопроса производительности, чем что-либо)

6
задан S.L. Barth - Reinstate Monica 20 July 2012 в 17:42
поделиться