我遇到了与DDD(域驱动设计)相关的困境。
让我们简化描述并假设我们有 3 个域。对于每个域,数据库中都有专门的集合。让我们假设:
- 第一个域由团队 1 覆盖,该团队选择了将数据保存在文档数据集中的解决方案,例如 MongoBD 或 ArangoDB
- 第二个团队负责第二个域,并根据要求选择了 Elastic Search。
- 第三个团队选择了似乎最适合最后一个域的 Oracle。
在整个应用程序的实现过程中,越来越需要使用分布在不同域中的属性的复杂搜索功能,例如:
查找 DomainA.SomeInformation = "Filter 1" 和/或 DomainB.AnotherInformation = "Filter 2" 和/或 DomainC.AnotherInformation = "Filter 3" 的所有信息。
评论:
- 也许应该有一个复杂的读取模型来收集一个模型中的所有信息,例如使用 CQRS - 域交换信息,例如通过消息通道,以便信息可以同步到读取模型中
- 优点:以上案例允许引入多语言持久性,每个团队都提供自治模块
- 挑战:提议的有界上下文可能存在问题,并且域以错误的方式分离。
如何应对上述情况,其中域似乎被正确分离,但另一方面搜索数据具有挑战性,因为没有单一的信息来源。