我是 CQRS 和事件源领域的新手,正在尝试评估它是否适合我的情况。对于如何进行跨聚合投影,我将不胜感激。
我正在考虑提供小型专业人力资源相关服务。候选人提交简历,招聘人员提交职位空缺。对于我想要的任何切片和切块,命令和 CQRS 应该可以很好地工作,例如用于列出特定领域中薪酬最高的职位空缺。
但我无法全神贯注于建议。如果我有一个原始的推荐引擎来向寻找
elixir
技能的招聘人员推荐具有 elixir
技能的候选人,反之亦然,这是否意味着我需要在每个职位空缺上建立一个投影(很可能是一个 PostgreSQL 表) /候选人更新?甚至可能在每个小的聚合更改上重建整个表?
您可以做的更一般的事情之一是将与开发人员拥有给定技能以及招聘人员正在寻找给定技能相关的事件项目到每个技能事件流中(例如“开发人员 A 知道 elixir”、“招聘人员 Z需要长生不老药”)。
该流的消费者可以更新针对“向我提供匹配的开发人员和招聘人员”优化的表,例如
skill STRING,
user STRING,
user_type ENUM of "developer", "recruiter",
PRIMARY KEY (skill, user) ;; could trivially shard this by skill
...但是消费者也可以做一些事情,比如使用文档存储来保存可能与该技能匹配的开发人员和招聘人员列表,或者机器学习算法可以使用事件并执行任何操作。