事件溯源数据库是否应该提供 ACID 属性

问题描述 投票:0回答:1

不确定使用哪个术语“Database”或“Event store”,但我正在谈论我们存储事件的位置。我想知道Event store是否应该具有ACID属性,尤其是Atomicity。我的意思是,如果出现错误,我们是否应该能够通过删除已保存的事件来回滚状态。但这会违反事件溯源法则,即“事件必须是不可变的”。我不确定这种数据库是如何实现的,但是如果我们无法回滚,是否意味着我们必须为每个事务手动进行补偿操作?

database event-sourcing acid
1个回答
0
投票
ACID 中的

A 表示原子性,而不是回滚能力。

回滚的概念来自于支持跨多个逻辑数据集合的事务的数据库,例如关系数据库中的表。事件溯源意味着您使用单独的流,而流就是您的事务边界。顺便说一句,这就是 DDD 聚合与一般事件源的联系,尽管对许多人来说并不完全明显。

因此,用于事件溯源的数据库确实应该符合 ACID,但是 A 意味着它应该支持单个流的事务追加。

© www.soinside.com 2019 - 2024. All rights reserved.