有人说商店活动本身而不是 state/data 是什么意思?

What does it mean when someone says store event itself but not the state/data?

有人在日志中说商店事件本身而不是 state/data 是什么意思?这样就可以重播事件来建立状态。由于没有状态存储,有人可以解释日志中的数据是什么样的吗?是否存储函数本身?

这意味着你只持久化状态中发生变化的部分,而不是所有状态。我会给你和例子。

假设您有一个 InventoryAggregate 存储项目,例如 Products。在内部,此 Aggregate 存储所有项目的列表,但当添加项目 X 的​​命令到达时 (AddItemXCommand),它会生成项目 x 已添加的事件 (ItemXWasAddedEvent)。下次类似命令到达时,Aggregate RepositoryEvent Store(如果需要,从 日志 加载)所有以前生成的事件并逐个应用它们-将一个放到聚合上以构建状态(在这个特定示例中,构建所有添加项目的列表)。

因此,在命令到达并执行后,state 发生变化(一个项目被添加到列表中)但是你没有持久化它(你没有持久化项目列表),你仅保留生成的事件(添加项目)。坚持该事件后,您可以丢弃 Aggregate 及其内部 state.

作为优化,您可以持久化内部状态,因此当命令到达时,您不必加载+应用所有事件,只需加载状态缓存后生成的事件。特定时刻的这种状态被称为 Snapshot.