活动采购和追溯活动

时间:2012-04-09 19:38:23

标签: cqrs event-sourcing

我需要在我的事件流中加入追溯事件,我不确定实现它的最佳方法。

我们需要保持原始事件流不变,以便进行审计和所有其他标准收益。事件流本质上也是时间性的,使我们能够查看历史中任何点的值。即6月1日下午5点x的值为10.00。偶尔我们在6月5日发现x的值实际上是6月1日下午5点的12.00。在这种情况下,我们将10.00称为'as-at'值,将'12 .00'称为as-of值,并在事件流中跟踪这两者。

重建as-at值的状态是从6月1日下午5点之前的最近一次快照以及6月1日之前的所有事件中直接查询。

我犹豫不决的是重建国家。如果对模型进行了校正,那么它应该默认使用而不是as-at,但是我无法确定是否有任何方法可以确定是否为as-at校正而不是从时间点读到整个事件流直到现在(这可能很大)并且大多数变化无关紧要,因为它们将与未来的变化有关,而不是与所讨论的时间点有关。

我应该在这里看一下不同的方法吗?

谢谢, 克里斯

1 个答案:

答案 0 :(得分:7)

我认为您所指的是bitemporal数据模型。也就是说,你不仅可以回答“谁赢得2000年美国总统大选”,而且“我们认为谁在2000年的选举日当晚赢得了美国总统大选”。

通常,您的事件流不一定能够有效地回答所有查询和双时态查询。这只是您学到的事实的历史。如果您今天了解到去年的事实,它仍然属于您的事件流的 end ,但标有相关日期。

查询此数据的最佳方式取决于您要回答的问题类型。关于如何构建时态和双时态数据库模式有几个nice papers,这些模式将由投影仪填充事件流来填充。