0

我们正在学习 DDD 并评估其在由遗留系统和数据存储支持的系统中的用途。

我们一直在使用 Anti-Corruption Layer、Bubble Context 和 Bounded Context 却不知道它们,这种方法对我们来说似乎很实用。

但我们对识别方法和身份相关性并没有把握和信心。旧数据存储没有主键,而是使用复合唯一索引来标识信息。

我们目前正在将模型创建为应该是实体的值对象(希望为每个对象添加“Long id”字段),或者我们很少使用唯一索引中使用的属性组合作为 id 字段。我们似乎很清楚实体模型应该有 id 字段。

以下是我的具体问题:

  • 我们希望我们闪亮的新实体在理论上具有“Long id”字段。现在不添加该字段是否可以,因为这没有给我们任何价值,因为后端数据存储不会填充或理解该字段?
  • 是否可以以 DDD 方式存储标识信息并在稍后的某个时间对其进行重构,希望数据存储能够满足我们的需求。
    • 如果是这样,从实体中抽象标识是好的方法(我的意思是可识别接口,还是每个实体的 KeyClass?-这里需要任何好的建议..
  • 这个问题可能超出了 DDD 的范围,但我想知道识别重构是否会对系统的多个层造成影响(例如,REST api 可能从/entity/id_field/id_field/id_field 更改/entity/new_long_id

和其他问题:

  • 我们如何将遗留信息用于我们不断发展的完善的域模型,同时减少识别问题的痛苦?

  • 或者在项目生命的任何时候都希望我们的域拥有Long id是不好的和没有价值的?

  • 我们如何重构身份管理?

更新:

  • 身份管理是 DDD 的重要方面,还是可以重构的基础设施方面,所以我们不应该花更多时间在上面?
4

1 回答 1

0

使用适合您需求的任何标识符,但要现实和坦率地了解选择错误的成本和影响。从外部分配标识符并将它们与其他信息位一起存储是有好处的(无论格式如何(guid、long、uuid))。是否重构身份管理更多的是进行成本/收益分析。它甚至是遗留系统的一个选项,在什么样的时间范围内会有两个键并排?为什么还要重用同一个数据存储?为什么不对其进行分区,以便您可以拥有并行数据存储(最坏的情况甚至在它们之间同步数据,最好是在一个方向上)?尝试一些垂直切片而不是水平切片。HTH。

于 2012-04-29T12:10:54.663 回答