【问题标题】:How to avoid N+1 problem with DDD aggregate relations?如何避免 DDD 聚合关系的 N+1 问题?
【发布时间】:2020-06-15 14:52:09
【问题描述】:

我读过 Vaughn Vernon 的一篇文章,他指出聚合只能通过身份相互引用。

假设我有一个聚合 A,它引用了聚合 B 的标识。我想在我的 UI 中显示一个包含聚合 A 的列表,其中包含来自聚合 B 的一些列。

这意味着我必须先查询聚合 A,然后我必须使用聚合 A 的引用查询聚合 B。

这似乎是一个 N+1 问题,我如何在尊重“通过身份引用”规则的同时解决这个问题?

【问题讨论】:

    标签: aggregate domain-driven-design ddd-repositories


    【解决方案1】:

    您不应该查询您的域对象,因为它们通常不适合查询。该域更关心您创建和写入数据的命令 / 事务方面。

    另一方面,querying / reporting 更关心读取数据。为此,您可以开发一种尽可能接近您正在使用的数据层的轻量级查询机制。因此,您返回相当原始的数据或 读取模型 (DTO) 以及您需要的任何连接和数据聚合。

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      相关资源
      最近更新 更多