DDD性能问题渴望加载AR子实体

时间:2012-08-29 13:41:59

标签: domain-driven-design eager-loading

在最后几天,我正在申请申请/学习DDD。 DDD的原则之一(请纠正我,如果我错了)是实体的所有更改都应该通过聚合根(AR)进行,并且AR应该加载他的子实体。通过这种方式可以验证聚合一致性。 只有一点点细节困扰着我。我无法理解DDD如何处理性能问题。想象一下,我有一个订单(AR),比如20000,30000的OrderLine。存在性能问题迫切需要加载很多子记录。将订单称为AR,您可以想象可能发生这种情况的另一种情况。 我很期待看到你对这个主题的看法。

1 个答案:

答案 0 :(得分:3)

DDD并非始终不受技术考虑。如果您的AR可以包含大量子实体,请考虑您是否可以自己创建子实体AR。必须在考虑最终一致性的同时做出这一决定。

在您提供的示例中,考虑订单AR是否确实需要首先引用OrderLine实体以保持完整性。如果是这样,请考虑使OrderLine自己成为AR,在这种情况下,您可能必须处理最终的一致性。当然,如果使OrderLine成为AR,您的应用程序逻辑将会发生变化,因为需要在OrderLine上执行的操作必须通过OrderLineRepository来访问OrderLine而不是通过Order AR。

有关详情,请查看Effective Aggregate Design by Vaughn Vernon