1

我遇到了与DDD(域驱动设计)相关的困境。

让我们简化描述并假设我们有 3 个域。对于每个域,数据库中都有专门的集合。让我们假设:

  1. 第一个域由团队 1 覆盖,该团队选择了将数据保存在文档数据集中的解决方案,例如 MongoBD 或 ArangoDB
  2. 第二个团队负责第二个域,并根据要求选择了 Elastic Search。
  3. 第三个团队选择了似乎最适合最后一个域的 Oracle。

在整个应用程序的实现过程中,越来越需要使用分布在不同域中的属性的复杂搜索功能,例如:

查找 DomainA.SomeInformation = "Filter 1" 和/或 DomainB.AnotherInformation = "Filter 2" 和/或 DomainC.AnotherInformation = "Filter 3" 的所有信息。

评论:

  • 也许应该有一个复杂的读取模型来收集一个模型中的所有信息,例如使用 CQRS - 域交换信息,例如通过消息通道,以便信息可以同步到读取模型中
  • 优点:以上案例允许引入多语言持久性,每个团队都提供自治模块
  • 挑战:提议的有界上下文可能存在问题,并且域以错误的方式分离。

如何应对上述情况,其中域似乎被正确分离,但另一方面搜索数据具有挑战性,因为没有单一的信息来源。

4

1 回答 1

1

https://youtu.be/CCX8Sox6BNQ?t=1430

查看 Udi Dahan 如何实现它的一些见解。这个想法是每个微服务都会过滤数据,因为数据归它所有。然后引擎(infra)将聚合响应并将它们组合回 UI。

如果数据之间有一个非常复杂的逻辑,即通过过滤从服务A获取数据,那么如果结果是这样,则从服务B获取数据A,如果不是,则从服务C获取数据B,考虑数据仓库和决策支持技术。

于 2020-02-10T17:22:00.257 回答