我正在尝试将领域事件存储在Postgres数据库中。我对很多事情都不确定,也不想以后重新设计这个结构,因此我正在寻找有经验的事件溯源人员的指导。我目前拥有以下表格:
domain events
version - or event id, integer sequence, helps to maintain order by replays
type - event type, probably classname with namespace
aggregate - aggregate id, probably random string for each aggregate
timestamp - when the event occured
promoter - the promoter of the event, probably user id
details - json encoded data about the properties
我不确定的是:
- 我是否应该存储域事件的发起者?
这可能有助于通过安全漏洞找到被攻击的帐户,但是对于像CRON作业这样的情况,我不知道要存储什么信息。 - 我应该用什么格式来存储事件类型?
我应该添加一个包含事件类型的表格,还是类名就足够了?
我需要添加事件组吗? - 我对有界上下文的定义感到困惑。据我所知,每个聚合都可以拥有多个有界上下文,因此我可以在多个模块中使用单个聚合的不同方面。这听起来很不错,例如账户可以与许多东西相关联,包括身份验证、授权、用户配置文件、用户帖子、用户合同等等...
我不确定一个域事件是否可以拥有多个有界上下文,或仅有一个,所以我是否也应该存储事件上下文呢?(对于我想重播与单个上下文相关的事件的情况)
如何在单个聚合类中实现这么多属性,我应该使用某种组合吗?