2013-03-27 55 views
7

我已经看到很多关于EventStores的内容,但所有文章都与关于CQRS的讨论结合在一起。没有CQRS的EventStore

我们希望使用EventStores来集成有界的上下文,但想要坚持使用传统的ORM来读/写聚合,以避免命令/查询和单独的读模型,这在我们的例子中会增加太多的复杂性。

由于它很受欢迎,所以一起讨论这两个概念,人们相信它们意味着一起生活 - 与实施用于聚合/ CQRS /阅读的EventStores相比,在不使用CQRS的情况下执行EventStore'lite'模型也是?

+1

为了使用事件存储方法,你八九不离十需要有所有*数据更改*操作由导致系统命令并产生一个事件(然后您可以存储和重放)。这在CQRS环境中非常合适 - 但我不明白为什么你自己也无法创建这样一个系统 - 它只是需要纪律来处理通过命令和触发事件的所有数据更改来报告什么是发生了。 – 2013-03-27 09:48:09

回答

4

运行至NoSql Distilled - 您几天内不做任何事就可以节省大量时间,但读取它并绘制出您要做的事。如果你是“阅读/写作聚合”,你应该考虑RavenDB这样的数据库。

注意,事件存储标签是针对JOliver事件存储,它具有为重点的建筑概念

你也有东西在略微向后去生产活动,您的域名被建在一个特定的方便的方式。关键的东西,你在你的问题断定事情的方式对比(套用严重和/或不公平的:我想用事件卖场刚刚店内活动 - 我可以做其他自己)

  1. 事件批处理总计 - 其事件管理的实际单位

  2. 调度到某事。

如果您不想要事件源域模型,请调查队列管理解决方案。这是一件非常合理的事情 - 只是不要假装Event Store是一个广义的事件pub sub队列。

将Dispatcher项目引入构建Read Model的Denormalizers是一件容易的事情 - 您可以使用各种奇特的东西,但使用熟悉的工具(如SQL SB)和简单的数据库层(如PetaPoco)都可以。

你真的用CommonDomain和EventStore做了一个秒杀吗?您是否阅读过nuget中的自述文件?你看过 JOliver视频吗?

+0

鲁本感谢您的宝贵回复,我找到了一个视频http://vimeo.com/31153808可以请你把我连接到其他(你提到有2) - 找不到其他的! – g18c 2013-03-30 14:32:53

+0

@ g18c编辑英寸IIRC你找到的是最好的单身,但其他人是值得一看 – 2013-03-30 21:28:30

+0

感谢这些链接 - 是的视频是伟大的,真正帮助我的理解。由于joliver以这种有条不紊的方式编写代码,所以实现命令和处理程序不会有太多开销,因为它可能会为ORM映射节省很多时间。我敲了一个快速演示(有一个小问题)http://stackoverflow.com/questions/15723640/why-is-my-command-event-string-field-being-retrieved-as-null但到目前为止对这个图书馆印象非常深刻 – g18c 2013-03-30 21:32:21

1

我们想用EventStores整合的限界上下文

它可以使用事件存储作为消息队列与额外的好处,这是持久的和新的订户可以要求所有的往事。

,但要与传统的ORM坚持读取/写入聚集, 避免命令/查询和独立的读取模式在我们的例子 会增加太多的复杂性。

另外,通过简单地使用单独的read-model而不是您的行为模型,您仍然可以获得CQRS的一些好处。

总体而言,您可以在不使用event sourcing的情况下使用EventStore,但应确保它支持集成方案的所有要求。除了事件存储之外,您可能还需要其他组件。更一般地说,事件存储可以用来存储任何时间序列数据。