如何解决在事件存储中删除数据的问题?
我需要永久彻底删除一些数据才能遵守隐私法。
我找到了这些替代品:
加密需要删除的数据,并将加密密钥存储在自己的表中。当需要删除数据时,只删除加密密钥。
对不需要删除的数据使用事件来源,参考CRUD数据库,查找需要删除的机密数据。
还有其他方法吗?
答案 0 :(得分:4)
我一个月前就这样做了。试图让它尽可能简单。我只是重播整个事件存储,修改事件数据,最后将事件存储在新的事件存储中。换句话说,迁移。当一切都完成后,我删除/备份旧商店。之后,由于变化,我根据预测重播了新的事件存储。
如果您没有实施加密,则必须以某种方式添加它。就像重播整个事件商店一样。
PS:只是想提及其他读者,改变事件存储的原因是非常有限的。除非遵守隐私法或真正令人讨厌的错误,否则不要使用它。如果您需要删除用户的数据,您可以执行以下两项操作之一:答案 1 :(得分:3)
首先,将您的事件处理程序更改为不需要数据,以便在删除数据时不会中断。
然后创建一个小应用程序来读取所有事件,并将新事件写入新事件存储库,而不需要删除所需数据。
测试您的系统仍然使用新的事件存储功能;可以为所有聚合物补充水分,并生成所有投影/视图/读取模型/发送它们。
删除旧的事件存储。
答案 2 :(得分:2)
来自geteventstore.net的EventStore允许您清除过期TTL的事件。通常这些是临时事件,如统计数据,或者你拥有的东西,即必须在一段时间后删除。
为了不破坏您的模型,人们通常会在某个时间使用快照来修复实体状态,然后可以在不破坏系统的情况下删除先前的事件。