Architecture 在构建DDD时复制数据库中的表

Architecture 在构建DDD时复制数据库中的表,architecture,datatable,domain-driven-design,Architecture,Datatable,Domain Driven Design,我与我团队的一位架构师进行了讨论,我想了解我们是否以正确的方式完成了所有事情 我们有几个子域。例如,其中一个(子域A)包含“玩家”实体。另一个(子域B)使用此实体 目前,数据库中有两个表——A.Player和B.Player。B.Player包含子域B所需的列(不是所有A.Player,而是其中的一部分) 架构师告诉我这种体系结构非常适合分布式系统 我认为这很奇怪,会导致重复和不一致。子域A中应该有应用程序服务,为子域B提供接口 问题是:谁是对的?我在哪里可以阅读有关这方面的信息 一个有界上下文

我与我团队的一位架构师进行了讨论,我想了解我们是否以正确的方式完成了所有事情

我们有几个子域。例如,其中一个(子域A)包含“玩家”实体。另一个(子域B)使用此实体

目前,数据库中有两个表——A.Player和B.Player。B.Player包含子域B所需的列(不是所有A.Player,而是其中的一部分)

架构师告诉我这种体系结构非常适合分布式系统

我认为这很奇怪,会导致重复和不一致。子域A中应该有应用程序服务,为子域B提供接口


问题是:谁是对的?我在哪里可以阅读有关这方面的信息

一个有界上下文(BC)依赖于另一个上下文的数据没有任何问题。我想这就是你所指的

请记住,BC-B中使用的BC-A中的数据将是BC-B中的值对象。它只应在BC-A中更改。在这种情况下,BC-A将是记录系统。BC-B中的数据决不能由BC-B直接更改,而只能响应来自BC-A的消息


因此,信息传递是额外努力发挥作用的地方。

如果你的“B.Player”是你的“a.Player”的视图,那么有几种方法可以解决这种情况。这种视图可以是虚拟的(按需检索信息,这意味着查询会有一些延迟)或物化的(信息在本地复制/存储,因此查询不会有延迟,而是需要更多的数据管理工作)。如果管理得当,数据重复不一定会导致不一致。一种可能的方法是Eben在回答中推荐的主/从模式