【问题标题】:Revisions: algorithm and data structure修订:算法和数据结构
【发布时间】:2011-02-08 05:17:09
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    根据您的问题,您总是会添加到关联表中并且永远不会更新它。

    当您想要获取最新对象属性的快照时,您需要对按日期添加/版本号排序的属性进行 DISTINCT 查询。 对于给定的属性检查历史记录也很简单。

    希望对你有帮助

    【讨论】:

    • 我看不出使用 2 个表的原因,你能解释一下吗?我不能在同一个表的行上选择 DISTINCT 吗?
    • @mvblfst 这样做是分两张表来优化读取最新数据的性能,我相信读取修订表会是非常庞大的操作
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2015-09-02
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多