DDD / 在图数据库中存储领域事件

Mik*_*378 3 architecture domain-driven-design neo4j cqrs

我拥有一个使用 Neo4j 作为图形数据库的应用程序。
我将读取和写入分开(遵循 CQRS 建议),以便实现命令模式并优化我的请求(页面请求),整个共享同一个数据库:neo4j 数据库。(不是两个不同的)

现在,我计划存储一些领域事件,例如UserRegisteredEvent等,以便由 Actors (Akka) 中托管的一些事件处理程序出队。

将域事件存储在共享数据库中(在我的例子中作为简单的 Neo4j 节点)是否有意义?
或者我真的需要一个三级数据库,例如MySQL?

我明确指出,我的解决方案不需要事件溯源。

amb*_*amb 5

如果您可以以某种方式关联存储的事件,或者您想向这些可以用关系或属性表示的事件添加更多信息,则图形数据库(在您的情况下为 Neo4j)是最佳选择,因为查询会更快比(或不那么)规范化的 RDBMS 更好。

此外,将来您可以轻松添加更多属性,而无需关心 SQL 和已添加实体的缺失属性。

因此,从我的角度来看,将事件节点添加到共享 Neo4j 数据库是一种更好的方法,即使对于简单的节点也是如此,因为查询是在子图中进行的,并且不会影响您的业务领域。