【发布时间】:2020-09-01 14:18:48
【问题描述】:
让我们来看看当今通用数据保护条例 (GDPR) 中这个非常有趣的观点。让我们弄清楚 Axon 对以下问题的最佳答案是什么。 (我正在使用带有 Spring Boot 的 Axon 4.1) 我向你介绍我的问题:
用户来了,例如他想预约,他必须在其中输入他的电子邮件、电话号码等大量个人数据。在用户点击 Enter 之前,他必须接受一份隐私声明,其中包括我们存储他的个人信息的时间。因此,当用户单击 Enter 时,后端将事件源用户输入的所有信息。他的所有隐私数据都将存储到 Axon 的域事件条目表中,用于创建事件的聚合。用户的个人数据可以在有效载荷中找到。 因此,当存储时间到期时,我必须从所有表中删除所有个人数据,包括 Axon 的域事件条目表。
所以我的问题是如何从域事件条目中物理删除聚合。
我试过这个解决方案:
@EventSourcingHandler
public void on(CampaignDeletedEvent event) {
markDeleted();
}
但它没有做任何事情,API 说:“将此聚合标记为已删除,指示存储库在适当的时间删除该聚合。” - 它应该物理删除?它不这样做,我等了 30 分钟,聚合仍在表中,那是什么意思“适当的时间”?
在我尝试删除失败后,我阅读了这个 stackoverflow 问题 (Axon Framework: Delete Aggregate Root),Allard 在评论部分说:“这是正确的。使用事件溯源,“删除”并不真正存在。它只是一种状态任何其他,除了在“已删除”状态下,所有命令都被拒绝。”
好的。所以这意味着我的聚合已死,但用户的个人数据仍然存在于聚合的域事件条目表的有效负载字段中?
所以我必须以某种方式创建一个存储库并将其删除或使用 SQL 脚本,你是怎么做到的?关于新功能,我可能是错误的和过时的,但如果权威来了,罚款是 $$$$$$$$$$$$$$$
谢谢, 马特
【问题讨论】:
-
GDPR 用例确实与事件溯源原则相冲突。那么:不要将事件溯源用于用户可识别数据?不确定这在实践中会如何发挥作用。
-
这是一个选项,但我不需要 Axon 框架
-
markDeleted不会物理删除数据,它只会关闭此聚合流,因此不会在其上应用更多事件。请在下面阅读我的详细答案。最好的,伊万。
标签: java spring-boot event-sourcing axon