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

时间:2014-06-27 18:08:56

标签: php domain-driven-design cqrs

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

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

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

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

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

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

由于

1 个答案:

答案 0 :(得分:3)

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

有关实施细节,请查看Greg Youngs CQRS example,尤其是domain implementationread model implementation