2

为什么将 uniqueidentifier(相当于 .NET 中的 GUID)用作 EventSources 和 Events 表中 Id 字段的类型?

使用充当身份的整数类型(如 SQL Server 中的 bigint)会不会更快,以便数据库可以在执行插入时分配 Id?

在事件溯源和 CQRS 方面,我是一个完全的新手,所以如果有人问过这个问题并回答了这个问题,并且我的搜索还不够正确,无法找到答案,我深表歉意。

4

1 回答 1

3

注意:答案 2 和 4 假设您遵循领域驱动设计的一些基本原则。

  1. ID在不同的聚合类型甚至不同的有界上下文中应该是唯一的

  2. 每个聚合必须始终处于有效状态。拥有唯一 ID 是其中的一部分。这意味着在存储初始事件并且数据库生成并返回相应的 ID 之前,您无法对聚合执行任何操作。

  3. 发送初始命令的客户端通常需要某种引用来关联创建的聚合。客户如何知道分配了哪个 ID?请记住,命令是无效的,它们不会返回 ack/nack 之外的任何内容,甚至不会返回 ID。

  4. 领域关注(实体的识别)将严重依赖技术实现细节(这实际上应该是#1)

于 2013-04-10T11:51:09.097 回答