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

标签 architecture neo4j domain-driven-design cqrs

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

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

将域事件存储在共享数据库中是否有意义,在我的例子中是简单的 Neo4j 节点?
还是我真的需要一个 tierce 数据库,例如 MySQL?

我明确表示我的解决方案不需要事件溯源。

最佳答案

如果您可以以某种方式关联存储的事件,或者您想向这些可以用关系或属性表示的事件添加更多信息,则图形数据库(在您的情况下为 neo4j)是可行的方法,因为查询将比(或不是)规范化的 rdbms 快得多。

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

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

关于architecture - DDD/在图数据库中存储领域事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22091556/

相关文章:

python - 在 python 中的 neo4j 中 inode

domain-driven-design - DDD中的数据访问?

architecture - 洋葱结构与六边形相比

database-design - 在微服务之间共享数据

c# - 将 xamarin 表单与 IServiceProvider 一起使用

通过 JDBC-Client 进行 Neo4j 单元测试

neo4j - 如何在 Neo4j 中找到关键节点?

domain-driven-design - 如何在CQRS中为银行转帐建模

domain-driven-design - 更新聚合根内的多态子实体

c# - 领域模型及相关数据(贫血领域模型)