У меня есть большие наборы данных с миллионами записей в формате XML. Эти наборы набора данных являются полными дамами данных базы данных до определенного момента времени.
между двумя выбросами новых записей могут быть добавлены, и существующие могли быть изменены или удалены. Предположим, что схема остается неизменной и что каждая запись имеет уникальный идентификатор.
Что было бы лучшим способом определить дельту между двумя из этих наборов данных (включая удаления и обновления)?
Мой план - загрузить все в RDBMS и уйти оттуда.
Сначала загрузите старый свалку. Затем загрузите более новую дампу в другую схему, но при этом я проверю, будет ли запись новой или является обновлением к существующей записи. Если да, я буду регистрировать идентификатор на новых таблицах (ых) под названием «изменения».
После этого все сделано, я пройду через старый дамп, проходя через все записи и посмотрим, есть ли у них подходящая запись (то есть: тот же идентификатор) на новом сватре. Если нет, войдите в изменения.
Предполагая, что просматривает запись по идентификатору - это работа O (log n)
, это должно позволить мне сделать все в o (n log n)
время.
Поскольку я могу определить разницу, глядя на наличие или отсутствие записей только с идентификатором и датой последней модификации, я также мог также загрузить все в основную память. Сложность времени будет такой же, но с добавленной пользой меньшего диска ввода / вывода, которое должно сделать это быстрее по порядку величины.
Предложения? (Примечание: это больше вопроса производительности, чем что-либо)