php - CQRS 中的反规范化/投影数据

标签 php domain-driven-design cqrs

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

我了解将命令和查询分开的好处;假设我也在使用事件溯源,并且我有一个很好的每个实体的历史列表。

据我所知,构建我的 View 的数据存储可以是任何形式,并且为了性能而对其进行非规范化是完全可以接受的。

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

我是否使用域模型中的事件来实现它,并由应用程序的另一部分监听?我是否使用 SQL View (这在使用 RDBMS/NoSQL 混合时不起作用)。

如何在不使用各种不必要的 getter 污染领域模型的情况下做到这一点?

谢谢

最佳答案

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

有关实现细节,请查看 Greg Youngs CQRS example ,特别是 domain implementationread model implementation .

关于php - CQRS 中的反规范化/投影数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24458328/

相关文章:

php - 我可以通过 unix shell 脚本在 Windows 中创建目录吗?

php - 要在数据表中显示的 JSON 数据

java - JPA - 如何将子实体添加到聚合根

c# - 没有 ORM 的存储库模式

asp.net-mvc - CQRS中创建聚合根的指导

php - 防止 iframe 窃取

php - 在 SQL 查询或 PHP 中进行计算?

ios - 如何在 iOS 应用程序上构建干净的表示层

CQRS:同步写入和读取数据库

domain-driven-design - 事件源系统中的流聚合关系