【发布时间】:2014-06-19 18:38:39
【问题描述】:
我正在尝试将域事件存储在 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
我不确定:
- 我应该存储域事件的启动子吗?
它可能有助于找到因安全漏洞而受损的帐户,但 我不知道要存储什么,例如通过 CRONjob。 - 我应该以什么格式存储事件类型?
我应该添加一个包含事件类型的表,还是类名就足够了?
我应该添加事件组吗? - 我对有界上下文的定义感到困惑。据我所知,每个聚合都可以有多个有界上下文,因此我可以在多个模块中使用单个聚合的不同方面。这听起来不错,因为例如帐户可以与许多事物相关,包括身份验证、授权、用户配置文件、用户帖子、用户合同等等...
我不确定,域事件可以有多个有界上下文,或者只有一个,所以我也应该存储事件上下文吗? (对于我想重播与单个上下文相关的事件的情况)
如何在一个聚合类中实现这么多属性,我应该使用某种组合吗?
【问题讨论】:
-
第 41 页 cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf 。仅供参考,我对事件溯源不是很有经验
-
如果您使用的是 .net,则可以使用 NEventStore 库为您执行此操作。如果没有,您可以尝试查看由 Greg Young 构建的 GetEventStore。
-
谢谢,我会阅读它们,我可能会找到一些问题的答案。
标签: postgresql domain-driven-design cqrs event-sourcing bounded-contexts