【发布时间】:2012-09-21 12:07:40
【问题描述】:
我目前正在尝试了解如何构建事件存储的内部结构。到目前为止我得到了什么:
- 一个事件存储有两个表(集合,...),一个用于聚合,一个用于事件。
- 聚合表包含以下数据:
aggregateId(可能是一个 GUID)和aggregateVersion(一个整数,仅表示影响此聚合的最后一个事件的数量)。 - 事件表包含以下数据:
eventId(同样是 GUID)、aggregateId(事件所属)、payload和version(它只是一个整数,用于描述事件的顺序)。
到目前为止这是正确的吗? 是否应该使用整数对事件进行排序?还是应该根据时间戳对它们进行排序?各有什么优势?有什么缺点?
【问题讨论】:
-
我还在考虑整数(由数据库自动递增)与时间戳问题。自动递增的数据库 id 显然可以保证绝对唯一,但它可能会使从某些故障转移场景中恢复变得不可能或充其量是困难的。
标签: cqrs event-sourcing