2012-02-07 57 views
27

我不太清楚,我明白了Eventstore是什么,我认为它是某种“Transactionlog”为Domainobjects的。它的优点和缺点是什么?使用它的好场景是什么?什么时候不应该使用它?何时使用Eventstore

编辑:

因为我可能会问太多,我会很高兴,如果有将是一个 “简单”的场景时使用的eventstore,何时不?换句话说:是否可以用一些句子来描述这两个场景,还是需要阅读5本书才能理解它?

回答

42

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

我克雷格同意,很难简洁地回答你的问题,因为它是非常依赖于上下文,但这里的原因很短的名单,为什么你可以考虑使用一个事件存储:

  • 你在乎做复杂的数据历史分析。例如,有人会来找你的未来,并问:“怎么我们的许多客户把一个项目到购物车,然后拿出来,但经过我们给他们发优惠券,回来买了吗?”可能会有无数的BI问题,您无法提前预测所有问题。如果您捕获系统中的所有事件,则可以重新构建针对未来任何问题的答案。
  • 同样,您关心审计并能够毫无疑问地证明谁在哪个时间更改了哪些数据以及为什么更改。您的活动商店是您的审计日志。
  • 您关心的是拥有高度可扩展的系统。由于事件存储的写入模型是仅附加的,因此它可以很好地适用于大批量应用程序。因为它不是固有的关系,所以通常可以很容易地进行分区。

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

  • 您没有任何的上面列出的需求。
  • 您不想处理必须构建调试工具以便能够轻松查看和修改事件存储中的数据的麻烦。
  • 您正在构建一个短期项目,您不希望长期处于这个项目中,因此您不想投入大量体系结构。
  • 您不准备在事件采购的同时学习CQRS,DDD和EDA。这些想法对于事件采购并非严格要求,但它们往往交织在一起,当你完全改变你的范例并将它们一起使用时,就会发现真正的价值。事件采购是一系列技术的组成部分,它们共同代表了对软件体系结构的一种截然不同的思考方式。它可能会吓人。
+1

感谢您的回答,因为它正是我所需要的(一些“简单”示例用于/反对使用事件存储库)。 – 2012-02-10 10:00:32

18

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

格雷格杨: 有一个约2小时的视频here,提供了一个很好的概述你问你的一切问题。 还有一个约6小时的在线类here

Udi Dahan: 有一个1小时的视频here,给出了何时使用这些技术的观点。

邮寄名单: 有一个组here您可以在这里提出您的所有问题并围绕该主题进行良好的讨论。

希望这是有帮助的。只是有这么多加载到你的问题,我不认为这将有可能做你或其他人有什么好的尝试,并在很短的谩骂接听,误导人。


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

+0

感谢您的回答,链接帮助(虽然我认为我已经知道他们中的大多数人)。刚刚在答案中看到了您的更新 - 这对帮助更大。 upvoted你的答案,但我认为埃里克李的答案更适合我的问题。 – 2012-02-10 10:02:29