【问题标题】:What is the best way to find an event in an event sourcing?在事件溯源中查找事件的最佳方式是什么?
【发布时间】:2023-09-30 06:23:01
【问题描述】:

在事件溯源中查找事件的最佳方式是什么?这是我最近对建筑师角色提出的一个问题。我说的是事件 ID,但显然答案是错误的。有谁知道最好或最有效的方法是什么?

【问题讨论】:

    标签: design-patterns architecture cqrs event-sourcing


    【解决方案1】:

    我认为面试官不是在寻找一个直接的答案,而是更多关于执行此类操作的分析过程。我相信他期待一些问题,例如:

    • 事件中存储的信息是什么?上面是否附有序列号或时间戳?
    • 事件是如何存储的?它们存储在多节点 NoSQL 数据库中还是存储在单实例关系数据库中?事件是否由某个键索引?
    • 我有哪些关于搜索操作的信息?如果我需要(仅)通过事件 ID 搜索事件并且此属性未编入索引,那么我别无选择,只能依次遍历所有事件。如果我需要搜索特定时间范围内的事件,那么搜索区域可能会大大缩小。

    根据您得到的回复,讨论会演变成经典的搜索方法,如索引、二分搜索或其他会减少搜索表面的选项。

    【讨论】:

    • 也许你是对的,但我正在检查聚合之类的东西,我在想是否会有一个聚合 ID 可以识别事件的流。
    • AFAIK 聚合意味着将具有共同点(例如聚合 ID)的多个事件放在一起。这也可以最小化搜索表面,所以我会说这是一个好方法