我有一个树数据结构,在一个特定的层次上有多达1000个节点(最大深度为8-9个层次)。
我需要维护整个树的版本。一个版本是在一些处理发生后创建的。在这些版本之间,节点中的数据可能会更改(不超过100 )。
到目前为止,我正在为每个新版本克隆整个树,但是在几个版本之后,空间消耗是巨大的。我不能完全删除以前的版本记录,因为我需要跟踪更改。
在数据库中存储这些版本的最佳方法是什么?(如果不是db,则有任何替代方式)。
发布于 2013-11-12 07:00:41
这不是一个非常直截了当的问题,但它是一个解决问题。通常,记忆其历史的数据结构称为持久数据结构。
链接到的维基百科页面上有你应该看的持久化树的示例。
路径复制法的实现相当简单,但性能却不尽如人意。
发布于 2013-11-12 09:35:34
一个可行的解决办法可能是:
如果您需要还原旧版本:
如果不需要重构旧版本,那么只需使用XMLUnit计算差异并将它们的序列化存储在数据库中。
发布于 2013-11-12 06:36:16
将每个唯一节点永久冻结在一个表中(一旦您在其中插入一个节点,就不要编辑或删除它)。如果需要稍微更改节点,请将此修改后的节点插入表中。然后,使用节点表的外键跟踪树版本。这应该需要每棵树少量的空间。
https://stackoverflow.com/questions/19922417
复制相似问题