有人说商店活动本身而不是 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 Repository
从 Event Store
(如果需要,从 日志 加载)所有以前生成的事件并逐个应用它们-将一个放到聚合上以构建状态(在这个特定示例中,构建所有添加项目的列表)。
因此,在命令到达并执行后,state
发生变化(一个项目被添加到列表中)但是你没有持久化它(你没有持久化项目列表),你仅保留生成的事件(添加项目)。坚持该事件后,您可以丢弃 Aggregate
及其内部 state
.
作为优化,您可以持久化内部状态,因此当命令到达时,您不必加载+应用所有事件,只需加载状态缓存后生成的事件。特定时刻的这种状态被称为 Snapshot
.
有人在日志中说商店事件本身而不是 state/data 是什么意思?这样就可以重播事件来建立状态。由于没有状态存储,有人可以解释日志中的数据是什么样的吗?是否存储函数本身?
这意味着你只持久化状态中发生变化的部分,而不是所有状态。我会给你和例子。
假设您有一个 InventoryAggregate
存储项目,例如 Products
。在内部,此 Aggregate
存储所有项目的列表,但当添加项目 X 的命令到达时 (AddItemXCommand
),它会生成项目 x 已添加的事件 (ItemXWasAddedEvent
)。下次类似命令到达时,Aggregate Repository
从 Event Store
(如果需要,从 日志 加载)所有以前生成的事件并逐个应用它们-将一个放到聚合上以构建状态(在这个特定示例中,构建所有添加项目的列表)。
因此,在命令到达并执行后,state
发生变化(一个项目被添加到列表中)但是你没有持久化它(你没有持久化项目列表),你仅保留生成的事件(添加项目)。坚持该事件后,您可以丢弃 Aggregate
及其内部 state
.
作为优化,您可以持久化内部状态,因此当命令到达时,您不必加载+应用所有事件,只需加载状态缓存后生成的事件。特定时刻的这种状态被称为 Snapshot
.