如何确定两个大型数据集之间的差异?

Nul*_*ion 6 xml sql large-data-volumes dataset

我有大量数据集,包含数百万条XML格式的记录.这些数据集是数据库的完整数据转储,直到某个时间点.

在两个转储之间可能已添加新条目,并且可能已修改或删除现有条目.假设架构保持不变,并且每个条目都有唯一的ID.

确定其中两个数据集(包括删除和更新)之间的差异的最佳方法是什么?


我的计划是将所有内容加载到RDBMS并从那里开始.

首先,加载旧转储.然后,将较新的转储加载到不同的模式,但这样做,我将检查条目是新的还是对现有条目的更新.如果是,我将在一个名为"更改"的新表上记录该ID.

完成所有操作后,我将遍历所有条目的旧转储,并查看它们是否在新转储上具有匹配的记录(即:相同的ID).如果没有,请记录更改.

假设按ID查找记录是一项O(log n)操作,这应该可以让我及时完成所有O(n log n)操作.

因为我可以通过查看只有ID和最后修改日期的记录的存在与否来确定差异,我也可以在主存中加载所有内容.时间复杂度将是相同的,但具有更少的磁盘I/O的额外好处,这应该使这个速度快几个数量级.

建议?(注意:这不仅仅是一个性能问题)

And*_*mar 0

作为一个不寻常的建议,请考虑使用git来实现此目的。将第一个数据集置于版本控制之下,然后清理工作目录并复制到第二个数据集。 git提出差异的速度真是太快了。