何时使用Eventstore

时间:2012-02-07 13:39:00

标签: .net domain-driven-design cqrs event-store

我不太确定我理解Eventstore是什么,我认为它是Domainobjects的某种“Transactionlog”。它的优点/缺点是什么?使用它的好方法是什么,什么时候不应该使用?

编辑:

  

因为我可能要求太多,如果会有一个,我会很高兴   “简单”场景什么时候使用eventstore而不是?换句话说:是否有可能只用一些句子来描述这两个场景,或者我需要阅读5本书才能理解它?

2 个答案:

答案 0 :(得分:50)

是的,事件来源就像是域对象的事务日志,事务日志是所有数据的权威来源。您可能拥有其他形式的数据副本,以便于查询,但它们只是可以随时删除和重建的副本。事务日志是事实的唯一来源。

我同意Craig的说法,很难简洁地回答你的问题,因为它非常依赖于上下文,但这里列出了为什么你可以考虑使用事件存储的简短列表:

  • 您关心对数据进行复杂的历史分析。例如,有人可能会在未来找到你并问:“我们有多少客户将商品放入购物车,然后将其取出,但在我们发送优惠券后,又回来买了它?”可以提供无穷无尽的BI问题,你无法提前预测所有这些问题。如果您捕获系统中的所有事件,则可以重建未来任何问题的答案。
  • 同样,您关心审计并且能够毫无疑问地证明谁在哪个时间和原因改变了哪些数据。您的事件存储是您的审核日志。
  • 您关心拥有高度可扩展的系统。由于事件存储的写入模型仅附加,因此它非常适合大批量应用程序。因为它本身并不是关系型的,所以通常可以很容易地进行分区。

另一方面,有一些很好的理由不这样做:

  • 您没有上面列出的任何需求。
  • 您不想处理必须构建调试工具以便能够轻松查看和修改事件存储中的数据的麻烦。
  • 你正在构建一个你不希望长时间存在的短期项目,所以你不想投入大量的架构工作。
  • 您不准备在活动采购的同时学习CQRS,DDD和EDA。事件采购并不严格要求这些想法,但它们经常交织在一起,当您完全改变范式并将它们全部用在一起时,就会找到真正的价值。事件采购是一系列技术的一部分,这些技术共同代表了一种非常不同的软件架构思维方式。这可能是令人生畏的。

答案 1 :(得分:20)

在stackoverflow问题中要求很多。你的问题遗漏的一件事是它的缺点是什么?无论如何,我想提供一些视频链接供你观看,而不是在这里回答。在这个问题的答案有意义之前,需要设置很多上下文。

格雷格杨:   有一个约2小时的视频here,可以很好地概述您在问题中要求的所有内容。   还有大约6个小时的在线课程here

Udi Dahan:   有一个1小时的视频here,可以了解何时使用这些技术。

邮件列表:   有一个小组here,您可以在那里提出所有问题并就该主题进行讨论。

希望这有帮助。你的问题中有很多内容,我认为你不可能或任何其他任何人在短篇小说和误导人的情况下回答这些问题。


更新:我认为您不需要阅读5本书,甚至不能查看下面的视频。我认为这样做非常值得,但不是必需的。您的问题是“简单”场景通常不需要事件源。大多数应用程序主要是CRUD和数据驱动。也许这是你问题的答案。如果您的系统中没有太多“行为”,那么您不需要它。如果有很多行为,那么你可能需要它。