问题标签 [polyglot-persistance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
116 浏览

domain-driven-design - 在由域驱动设计和多语言持久性驱动的分布式架构中处理复杂的读取模型

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

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

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

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

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

评论:

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

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