cqrs - 带有事件溯源的逻辑删除(可能带有敏感数据/GDPR)
问题描述
我知道事件源应该是不可变的并且只能附加。
但是,我想知道如何处理逻辑删除。如果用户在 UI 上单击“删除”并且他们期望硬删除,我是否在我的事件中包含 IsDeleted 标志?这里还有其他选择吗?
编辑:当周围有敏感数据时,这个问题特别感兴趣,可能存储在事件本身中,并且用户希望它完全从我们的系统中闪现出来。这可能与欧盟 GDPR 法规和法律有关。
解决方案
您可以发布一个“已删除”事件,该事件将在您的读取数据库中删除/标记数据为已删除,但这不是硬删除(您在问题中指定)。您的事件存储中仍然会有数据。
使用事件溯源时,硬删除实际上非常困难。我假设您正在使用事件源客户数据?通常有一些解决方案,但它们并不是很漂亮:
您要么不对敏感的客户数据进行事件源,而是单独存储它,然后以某种方式从聚合中引用它
您可以删除旧事件(请注意,这可能会超出您的预期,但这取决于您的设计/应用程序)
您可以添加已删除的事件并更改现有事件以去除敏感数据。
推荐阅读
- audio - 我应该使用哪个 mp4 时间刻度来创建/修改章节 trak 原子?
- laravel - 如何在另一个私有作曲家包中使用私有作曲家包?
- svg - 如何阻止svg文本标记
- excel - 复制后在原始工作表上选择目标粘贴范围
- flutter - Flutter 构建和展示网页
- android - 在 App Purchase 订阅中并在外部平台上使用此状态
- python - 如何在将熊猫数据框保存到 sql 时选择我的主键列
- c# - C# - 此上下文仅支持原始类型或枚举类型
- java - 如何使用角色表自动加入我的用户表
- php - PHP:用 file_put_content 保存 wget 返回的文件