2013-04-09 17 views
2

爲什麼uniqueidentifier(相當於.NET中的GUID)用作EventSources和Events表中Id字段的類型?爲什麼GUID用作EventStore數據庫中EventSources和Events表中Id字段的類型?

使用整數類型(如SQL Server中的bigint)作爲標識起作用會不會更快,以便數據庫可以在插入執行時分配ID?

在事件採購和CQRS方面,我是一個完整的newb,所以我很抱歉,如果這已被問及回答,我的搜索還不夠正確,找不到答案。

回答

3

注意:答案2和4假定您遵循域驅動設計的一些基本原則。

  1. ID應該是唯一的在不同的聚合類型,甚至在不同的限界上下文

  2. 每天總要始終處於有效狀態。擁有唯一的ID是其中的一部分。這意味着在初始事件存儲和數據庫生成並返回相應ID之前,您無法對聚合進行任何操作。

  3. 發送初始命令的客戶端通常需要某種引用來將創建的聚合關聯到。 客戶如何知道哪個ID已被分配?請記住,命令是無效的,它們不會返回超出ack/nack的任何內容,甚至不會返回任何ID。

  4. 域的關注(實體的標識)將很大程度上依靠技術實現細節(這實際上應該是#1)

+0

謝謝你的答案。 – theBoringCoder 2013-04-10 15:17:46

相關問題