在远处,远处的一个领域星系,提到
鉴于我目前的模型,其中'Places'是包含'测量值'的聚合根,我有一个两难选择:
用户希望一次查看一种测量值,并且有很多测量值。 要仅在需要其中一些测量值时加载所有测量值似乎是不必要的..
EG。我坚持如何组织/模拟需求“在时间A和B之间显示河流X(地方)的水流量(测量值)”
是否允许实例化River X聚合根仅部分加载了给定用例中涉及的测量值类型? 是否有其他方法来建模测量值及其来源?
请让med知道你的想法......
答案 0 :(得分:1)
我认为你的汇总是一致的。您的困境与领域模型无关,而不是与演示模型无关。
我将考虑在NoSQL实例中反序列化每个度量的可能性,这样您的presenteation层可以过滤并进行任何查询,而不会影响域层的一致性。
答案 1 :(得分:0)
如果我错了,请纠正我,但这听起来非常像数据模型和存储会影响您的系统设计?如果是这样的话,可能是你进退两难的原因。使用聚合的利益建模的关键部分是它没有依赖性。依赖关系,如数据库和数据模型。没有直接的观点'一个聚合,所以它不是由视图塑造的。这使得聚合更容易设计。他们更专注于解决问题。因此,他们非常适合做复杂的事情。
如果事实证明您不需要聚合来为您的域建模。然后,您可以专注于高效的存储和检索机制。
换句话说......
如果你不需要,不要把自己束缚在DDD的结上。如果有帮助我创建了常见DDD错误的信息图。你会发现它很有用。你可以找到它here。
顺便说一句,我认为DDD是一个很好的方式,但前提是你的域名需要保证。如果我误解你的话,可能会有误解。
答案 2 :(得分:0)
我没有看到真正的问题。您说每个Measurement
都绑定到特定的Place
,那么您不必加载所有Measurements
。
使用正确的数据层配置,您可以通过选择/加载/仅实例化它的父(Measurement
)来加载所需的Place
。