【发布时间】:2011-11-11 12:52:57
【问题描述】:
我有 large datasets 有数百万条 XML 格式的记录。这些数据集是数据库到某个时间点的完整数据转储。
在两个转储之间可能已添加新条目,而现有条目可能已被修改或删除。假设架构保持不变,并且每个条目都有一个唯一的 ID。
确定其中两个数据集(包括删除和更新)之间的差异的最佳方法是什么?
我的计划是将所有内容加载到 RDBMS 并从那里开始。
首先,加载旧的转储。然后,将较新的转储加载到不同的模式中,但在此过程中,我将检查条目是新条目还是对现有条目的更新。 如果是,我会将 ID 记录在名为“更改”的新表中。
这一切都完成后,我将检查旧转储中的所有条目,看看它们在新转储上是否有匹配的记录(即:相同的 ID)。如果没有,请记录更改。
假设通过 ID 查找记录是 O(log n) 操作,这应该允许我在 O(n log n) 时间内完成所有操作。
因为我可以通过仅通过 ID 和最后修改日期查看记录的存在与否来确定差异,所以我也可以将所有内容加载到主内存中。时间复杂度将是相同的,但额外的好处是磁盘 I/O 更少,这应该会使这个速度提高几个数量级。
建议? (注意:这更像是一个性能问题)
【问题讨论】:
-
“因为我可以确定......这应该会使这个速度提高几个数量级”。 “这更像是一个性能问题”。 ...所以在内存中执行此操作会快得多,而且您主要关心的是性能。听起来您回答了自己的问题。
标签: sql xml dataset large-data-volumes