保持和管理数据历史

时间:2015-10-12 11:56:51

标签: orientdb

我正在考虑保留OrientDB数据库上所有数据更改的历史记录的可能性。该历史记录应该像普通数据一样可以被探索。喜欢:我将能够查询用户对其个人资料所做的所有更改。

我考虑了一些像建议here这样的解决方案来为每个顶点类创建历史类,并在顶点发生变化时为该类创建每个更新(顶点版本增加)的历史记录。

这可以使用某种类型的触发器直接在DB内部完成吗?

即使为顶点的正常数据提供了什么关于边缘?我怎么能在历史中保存它们?和顶点之间?

我有更直接的方法在OrientDB中做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我建议将更改和历史记录保存在某种事件存储中。这可以是一系列事件,每个事件都是不可变的,记录只会被追加。

这看起来像

VERTEX_CREATED(id: 1337, time: 1336624823)
VERTEX_CHANGED(field: foo, before: A, after: B, time: 133676328)
...

这样就可以从任何你想要的位置重放历史记录,你可以跳过条目来抑制发生的错误等等。

如果将这些记录存储在表格或图表中则不相关。在图形中,这可以是节点,其中每个节点在其自身之前和之后与事件连接,如链接列表。在表格中,这只是行。

如果您想了解有关此方法的更多信息,我建议您Event Sourcing by Martin Fowler