我目前正在尝试了解如何构建事件存储的内部结构.到目前为止我得到了什么:
aggregateId可能是GUID)和aggregateVersion(这是一个整数,它只表示影响此聚合的最后一个事件的编号).eventId同样,GUID),aggregateId(事件所属)payload,和a version(它只是描述事件顺序的整数).到目前为止这是正确的吗?应该使用整数来排序事件吗?或者他们应该根据时间戳订购?每个有什么好处?有什么缺点?
Mik*_*erg 10
我建议你看看Jonathan Oliver的EventStore作为参考.
在SQL持久性版本中,只有一个表.您可以轻松地在没有聚合表的情况下生存,并将aggregateId存储在事件表中.可以使用max()查询检索最新版本.
除此之外,我认为你应该考虑在事件表中使用标题,因为总是有一些有趣的元数据你不想存储在事件本身中.
而且,我认为你应该在事件表中添加一个日期列.
最后,您可能希望获得某种标志,指出事件是否已下游调度.此添加使您可以在一个线程或进程中编写,并在另一个线程或进程中进行分派
Aaand在那里,我有点建议Jonathans EventStore的结构.