事件采购 - 如何删除事件存储中的数据?

时间:2014-07-31 07:28:39

标签: events cqrs event-sourcing event-store

如何解决在事件存储中删除数据的问题?

我需要永久彻底删除一些数据才能遵守隐私法。

我找到了这些替代品:

  1. 加密需要删除的数据,并将加密密钥存储在自己的表中。当需要删除数据时,只删除加密密钥。

  2. 对不需要删除的数据使用事件来源,参考CRUD数据库,查找需要删除的机密数据。

  3. 还有其他方法吗?

3 个答案:

答案 0 :(得分:4)

我一个月前就这样做了。试图让它尽可能简单。我只是重播整个事件存储,修改事件数据,最后将事件存储在新的事件存储中。换句话说,迁移。当一切都完成后,我删除/备份旧商店。之后,由于变化,我根据预测重播了新的事件存储。

如果您没有实施加密,则必须以某种方式添加它。就像重播整个事件商店一样。

PS:只是想提及其他读者,改变事件存储的原因是非常有限的。除非遵守隐私法真正令人讨厌的错误,否则不要使用它。如果您需要删除用户的数据,您可以执行以下两项操作之一:

  • 加密所有用户的数据,当你必须删除它时,你就得到了 摆脱私钥。
  • 将所有用户的数据放在一个单独的商店/数据库中,如果需要,您可以删除它而不影响系统的其他部分。

答案 1 :(得分:3)

首先,将您的事件处理程序更改为不需要数据,以便在删除数据时不会中断。

然后创建一个小应用程序来读取所有事件,并将新事件写入新事件存储库,而不需要删除所需数据。

测试您的系统仍然使用新的事件存储功能;可以为所有聚合物补充水分,并生成所有投影/视图/读取模型/发送它们。

删除旧的事件存储。

答案 2 :(得分:2)

来自geteventstore.net的EventStore允许您清除过期TTL的事件。通常这些是临时事件,如统计数据,或者你拥有的东西,即必须在一段时间后删除。

为了不破坏您的模型,人们通常会在某个时间使用快照来修复实体状态,然后可以在不破坏系统的情况下删除先前的事件。