修订:算法和数据结构

时间:2010-04-15 04:23:15

标签: database-design data-structures versioning rdbms nosql

我需要通过修订来构建和处理数据的想法。 例如,我有一个对象数据库(例如汽车)。每个对象都有许多属性,这些属性可以是任意的,因此没有用于描述这些对象的集合模式。这些对象可能保存为键值对。

现在我需要更改对象的属性。我不想完全重写它 - 我希望能够返回并查看这些属性的更改历史记录,这就是为什么我要添加新属性并保留旧属性(所以我猜一个时间戳可以完成这项工作)告诉哪个属性是最新的。)

与此同时,我希望能够获取有关快照中任何对象的信息,只包含每个属性的最新版本。

任何想法最好的方法是什么?至少请指出我正确的方向。谢谢!

1 个答案:

答案 0 :(得分:2)

一种可能性是拥有一个对象和属性表(您可能已经拥有)。 创建包含的关联表 ID ObjectId PropertyId值Date_Added / version_number(根据您的选择,如果您想使用时间戳或序列列)

根据您的问题,您将始终添加到关联表,并且永远不会更新它。

如果要获取最新对象属性的快照,则需要对按date_added / version number排序的属性执行DISTINCT查询。 对于给定的属性,检查历史记录也很简单。

我希望这会有所帮助