微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们可以在 DDD 中为每个聚合使用一个数据库吗

如何解决我们可以在 DDD 中为每个聚合使用一个数据库吗

我正在设计一个企业应用程序,如果在领域驱动设计中为每个聚合使用一个数据库并为它们应用 CQRS 是否可以,我有一个大问题。

例如,我有一个包含多个限界上下文的域,每个 BC 有两个或多个聚合,那么我可以使用关系数据库(如 MSsql)和非 sql 数据库(如 MongoDb)进行一个或多个聚合吗?

解决方法

概念 (Domain-Driven Design) 不讨论确切的实现。所以它不限制数据库实现的使用。如果适合您的用例,请继续尝试。唯一要做的就是提前进行一些设计规划,如果以后需要,可以更改。我也建议在混合中使用事件采购。在与 CQRS 的混合中,它真的有助于通过非规范化。

主要关注的是处理通过所有数据库一致地反映状态的命令。例如,如果您有一个包含实体的聚合根和分布在多个数据库上的一些值对象,请确保所有适配器的行为都相似,这样域就不必担心数据如何跨数据库存储(分离)。如果这可以巧妙地实现,那么域就可以自由地只有域逻辑。我的意思是关于接口是如何为多个数据库设计的。如果 NoSQL DB 界面显示传递文档的方法,并且 SQL DB 显示它适用于表,那么域肯定会在文档和表之间切换。抽象该逻辑(可能使用 Hexagonal 架构),您就可以处理多个 DB。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。