由于我没有得到答案,我试着自己回答这个问题。
可以从历史记录中删除事件,您需要创建一个新的事件存储,并为要删除的相同聚合id过滤事件。完成后,可以切换到新的事件存储并删除旧的事件存储。也许你也需要重播投影。因此,这与整个迁移非常相似,需要很多时间。在目前的情况下,如果我每年只需要这样做一次左右,这不是问题。将这些数据存储在事件存储器中的另一个问题是,我要么从那里传输数据,要么需要复制数据以提供服务。后一种方法并不总是一个好的解决方案,因为有时复制需要太多时间,为了保存数据,您需要以流式方式传输数据,否则您的内存会很快用完。因此,事件存储应该支持流式附件。
另一种解决方案是将相对较大的数据保存在文件中,并显示404 not found之类的内容,或者因为这样那样的原因删除了文件。我经常看到这种情况。在这种情况下,可以将事件保留在存储器中,例如,您可以添加一个ContentRemoved事件,您可以在其中选择原因。另一个选项是隐藏删除的文件,所以它不会被应用程序列出,我想这也是常见的。这种解决方案也有缺点。这种方法的迁移更加复杂,因为您需要移动事件存储和文件。如果意外删除文件,则除非备份中包含该文件,否则以后无法撤消该文件。这可以通过将实际文件删除延迟几天来解决,因此如果您改变主意,可以撤消它。另一个制作垃圾箱和文件的选项只有清空垃圾箱才能删除。
我认为这两种解决方案都值得考虑,可能取决于实际项目,哪种更适合。