我有一个名为 School 的聚合根实体。 School 实体包含人员、课程、日程流程、文档等各种聚合实体,从而产生 20 多个属性。这些属性中的大多数都表现出一对多 (1-M) 关系,有些甚至有自己的聚合根。
我的问题涉及添加、修改或删除聚合的过程。目前,我加载整个聚合树,执行必要的修改,然后保存更改。然而,考虑到涉及的大量数据,我担心此操作的潜在费用。
使用各自的存储库直接对数据库表进行修改会更谨慎吗?例如,我可以使用课程存储库通过 ID 更新课程,而不是加载整个学校来更新课程。
我有兴趣了解第一种方法的性能影响以及相关的优缺点。
当我们拥有大量数据时,我们应该采取哪些步骤来避免将来出现任何性能问题。
您的问题中缺少有关您想要实现的行为的信息。如果您希望您的
School
模型始终有效,因为每个 Course
都有属于学校 Staff
的老师分配给它,那么基本上总是需要加载所有模型来检查这些不变量。
但这种情况很少发生。更好的解决方案是您明确允许此类问题存在于您的模型中(可能作为它们自己的实体)。这样用户就可以评估不同的选项并修复它们。 (您可能使用的 IDE 在告诉您其他文件中的编译错误时可能会执行类似的工作,但不会阻止您继续编辑当前打开的文件。MS Word 也是如此,让您知道有当前光标位置上方 3 行的单词有拼写错误,但您仍然可以继续输入。)