DDD(Domain-Driven-Design) – 大型聚合
我目前正在研究Eric Evans’es Domain-Driven-Design.聚合的想法对我来说很清楚,我发现它非常有趣.现在我想到一个像聚合的例子: BankAccount(1)—-> (*)交易. BankAccount BigDecimal calculateTurnover(); BankAccount是一个聚合.为了计算营业额,我应该遍历所有交易并总结所有金额.埃文斯假设我应该使用存储库来加载aggreagates.在上面的例子中,可能有几万个事务,我不希望在内存中同时加载.
你有什么建议在DDD聚合中实现calulcateTurnover? 正如您所指出的,在聚合中加载1000个实体不是可扩展的解决方案.您不仅会遇到性能问题,而且您可能也会遇到并发问题,正如Vaughn Vernon在其 Effective Aggregate Design系列中所强调的那样.您是希望每笔交易都可以在BankAccount汇总中使用,还是只关注营业额? 如果它只是您需要的营业额,那么您应该在实例化您的BankAccount聚合时建立此值.这可能是由您的数据存储技术(索引的JOIN,例如,如果您使用SQL)有效计算的.也许您还需要考虑将此作为数据存储中预先计算的值(当您开始处理每个银行帐户的数百万个交易时会发生什么情况)? 但是,您可能还需要域中可用的交易吗?然后你应该考虑拥有一个单独的事务存储库. 我强烈建议阅读Vaughn Vernon关于聚合设计的系列文章,如上所述. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |