我有large datasets數以百萬計的XML格式的記錄。這些數據集是數據庫的完整數據轉儲,直到某個時間點。如何確定兩個大型數據集之間的差異?
兩次轉儲之間可能已添加新條目,而現有條目可能已被修改或刪除。假設架構保持不變,並且每個條目都有一個唯一的ID。
確定這些數據集中的兩個(包括刪除和更新)之間的增量的最佳方法是什麼?
我的計劃是將所有內容加載到RDBMS並從那裏開始。
首先,加載較舊的轉儲。然後,將較新的轉儲加載到不同的模式中,但這樣做時我將檢查該條目是新的還是對現有條目的更新。 如果是,我將在一個稱爲「更改」的新表上記錄標識。
在這一切都完成後,我會去通過老轉儲通過所有條目去,看看他們是否有匹配的記錄:在新的轉儲(即相同的ID)。如果不是,請登錄到更改。
假設通過ID查找記錄是O(log n)
操作,這應該允許我在O(n log n)
時間內完成所有操作。
因爲我能確定通過查看是否存在只有ID和最後修改日期記錄的區別,我也可以加載在主內存中的一切,以及。時間複雜度將是相同的,但有更少的磁盤I/O帶來的額外好處,這應該使這個速度提高几個數量級。
對此提出建議? (注:這更多的是比任何性能問題)
「因爲我可以確定...哪個應該使這個更快的數量級」。 「這不僅僅是一個表現問題」。 ...所以在記憶中這樣做會更快,而且你主要關心的是性能。聽起來像你回答了你自己的問題。 – Gerrat