30

我不太确定我理解 Eventstore 是什么,我认为它是 Domainobjects 的某种“事务日志”。它的优点/缺点是什么,什么是使用它的好场景,什么时候不应该使用它?

编辑:

由于我可能要求太多,如果有一个“简单”的场景何时使用事件存储,何时不使用,我会很高兴?换句话说:是否可以仅用几句话来描述这两个场景,还是我需要阅读 5 本书才能理解?

4

2 回答 2

53

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

我同意 Craig 的观点,因为它非常依赖于上下文,所以很难简洁地回答您的问题,但这里列出了您可能考虑使用事件存储的原因:

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

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

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

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

Greg Young:这里有一个约 2 小时的视频,可以很好地概述您在问题中要求的所有内容。这里还有约 6 小时的在线课程。

Udi Dahan:这里有一个 1 小时的视频介绍了何时使用这些技术。

邮件列表:这里有一个小组您可以在其中提出所有问题并围绕该主题进行愉快的讨论。

希望这会有所帮助。您的问题太多了,我认为尝试用简短的谩骂来回答它并误导人们可能对您或其他任何人没有任何好处。


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

于 2012-02-07T13:54:55.603 回答