cqrs - 事件溯源和追溯事件

标签 cqrs event-sourcing

我需要将追溯事件合并到我的事件流中,但我不确定实现它的最佳方式。

我们需要保持原始事件流不变,以便审计和所有其他标准优势。事件流本质上也是暂时的,使我们能够查看历史上任何一点的值。即 x 的值在 6 月 1 日下午 5 点为 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-of 更正,那么默认情况下应该使用它而不是 as-at,但我看不到任何方法来确定是否存在 is as-of在不读取从时间点到现在的整个事件流的情况下进行更正(这可能很大),并且大多数更改都无关紧要,因为它们将与 future 的更改相关,而不是与相关的时间点相关。

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

谢谢, 克里斯

最佳答案

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

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

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

关于cqrs - 事件溯源和追溯事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078757/

相关文章:

event-handling - 限界上下文内部和外部的 EventSourcing

domain-driven-design - 我可以使用不同的数据库作为 Wolkenkit 读取模型吗?

architecture - CQRS/最终一致性 - 处理读取端更新失败

design-patterns - Command + CommandHandler 和 Service 有什么区别?

c# - 域事件处理程序什么时候开始发挥作用?

cqrs - 传奇、流程管理器和基于文档的方法之间有什么区别?

domain-driven-design - 如何使用事件溯源实现复杂形式的命令和事件?

WCF + CQRS + 推送通知

entity-framework - CQRS与 Entity Framework 自跟踪实体/WCF RIA服务兼容吗?

domain-driven-design - 阅读 Vaughn Vernon 的 cqrs+es 的模型面