为什么使用 uniqueidentifier(相当于 .NET 中的 GUID)作为 EventSources 和 Events 表中 Id 字段的类型?
使用充当标识的整数类型(如 SQL Server 中的 bigint)不是更快吗?这样数据库就可以在执行插入时分配 Id?
在事件溯源和 CQRS 方面,我是一个完全的新手,因此,如果有人询问并回答了这个问题,而我的搜索不够正确,无法找到答案,我深表歉意。
最佳答案
注意:答案 2 和 4 假设您遵循领域驱动设计的一些基本原则。
ID 在不同聚合类型甚至不同限界上下文中应该是唯一的
每个聚合必须始终处于有效状态。拥有唯一的 ID 是其中的一部分。这意味着在存储初始事件以及数据库生成并返回相应的 ID 之前,您无法对聚合执行任何操作。
发送初始命令的客户端通常需要某种引用来将创建的聚合关联起来。 客户端如何知道已分配了哪个 ID?请记住,命令是无效的,除了 ack/nack 之外,它们不会返回任何内容,甚至不会返回 ID。
领域问题(实体的识别)将严重依赖技术实现细节(这实际上应该是#1)
关于cqrs - 为什么使用 GUID 作为 EventStore 数据库中 EventSources 和 Events 表中 Id 字段的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914043/