DDD骨料性能



我是DDD的新手。现在我有一个集合Team和实体TeamMember:

class Team {
members: Map<TeamMemberId, TeamMember>;
add(member) {
assert(!members.has(member.id), "Team Member is already exists");
this.members.set(member.id, member);
}
}

当我执行AddTeamMemberCommand时,存储库将从MongoDB加载整个聚合
当团队规模较大时,这似乎是不可接受的

我从谷歌和stackoverflow找到了以下内容:

  • 使用Id引用而不是实体
  • 惰性负载
  • 重新设计聚合

我不确定哪种解决方案适合我,或者是否有更好、更通用的解决方案适用于这种情况有没有GitHub示例项目我可以看看?非常感谢。

对于这种情况,是否有更好、更通用的解决方案?

对于根本不打算更改聚合的读取/查询,延迟加载是很好的。在CQRS的世界里,我们甚至可以避免完全加载聚合,而只是获取我们需要的信息的只读副本。


AGGREGATE是一组相关对象,我们将其视为数据更改的一个单元。

如果我们试图对聚合进行更改,并试图卸载一堆不必要的信息,可能意味着我们的聚合边界在错误的地方,我们应该重新设计我们的域模型,以便加载的信息更好地符合我们的需要。

例如,如果您试图只更新Bob,而不是整个团队,那么这可能暗示Bob不是团队聚合中的实体,而是属于一个不同的、较小的聚合,这与团队有某种关系。

毛罗·塞尔维恩蒂关于聚合边界的演讲可能是一个很好的起点。

最新更新