在CQRS中对数据进行非规范化/投影

问题描述 投票:3回答:1

我正在研究CQRS(以及一般的DDD),我不确定如何实现它的特定部分。

我理解分离命令和查询的好处; 让我们说,为了它,我也使用事件采购,我有一个很好的列表,我的每个实体的历史。

据我了解,我的视图将构建的数据存储可以是任何形式,并且为了性能而对此进行非规范化是完全可以接受的。

我的问题是如何实现从规范化/以事件为中心的写入DB到我的视图就绪/非规范化表的转换/投影?

我是否使用来自我的域模型的事件实现此功能,并由应用程序的其他部分进行监听? 我是否使用SQL视图(这不适用于使用RDBMS / NoSQL混合)。

如何在不使用各种不必要的getter污染域模型的情况下执行此操作?

谢谢

php domain-driven-design cqrs
1个回答
3
投票

您使用域事件管理阅读投影是正确的。 您的聚合不需要公开其内部状态,因为它们广播的域事件将包含更新视图投影的所有必要信息。 然后可以以任何形式存储视图投影数据。

有关实现的详细信息,请参阅Greg Youngs CQRS示例 ,特别是域实现读取模型实现

© www.soinside.com 2019 - 2024. All rights reserved.