活动采购和追溯活动

CCo*_*ron 3 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-的修正模型,然后,那么它应该在默认情况下使用,而不是作为-的,但我看不到任何方式,以确定是否有为-的修正,而不必读取整个事件流的从时间点到现在(这可能很大)并且大多数变化都不重要,因为它们将与未来的变化相关,而不是与所讨论的时间点相关.

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

谢谢,克里斯

Seb*_*ood 7

我认为你所指的是一个双时态数据模型.也就是说,你不仅可以回答"谁赢得2000年美国总统大选",而且"我们认为谁在2000年的选举日当晚赢得了美国总统大选".

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

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

  • 如果银行错误地将20美元添加到您的帐户而不是15美元,则有两种方法可以撤销交易.1)部分逆转将记录-5美元的修正.2)完全撤销将记录-20美元的反转和15美元的更正交易.大多数银行/金融系统使用排他性完全撤销来保留审计日志.(在部分逆转中,只有隐含正确的交易,其中完全逆转包括正确的交易.) (3认同)