2017-10-14 46 views
0

我想将一些数据存储在相对较大的文件中(每个文件几GB)。我想使用事件采购并保存与这些文件相关的事件,例如FileCreated:标题,描述,时间戳,作者,个人,加密密钥等。过了一段时间后,一些文件将不再需要,并占用大量空间。所以为了释放空间,我需要删除它们。这样做是有问题的,因为我将在事件存储中拥有历史记录,而不是文件系统中的文件。有没有办法保持完整性,并以某种方式删除两者?还是有这个问题的最佳做法?事件源代码 - 删除事件相关文件

回答

0

由于我没有得到答案,我试着自己回答。

可以从历史记录中删除事件,您需要创建新的事件存储并筛选要删除的相同集合标识的事件。完成后,您可以切换到新的事件存储并删除旧的事件。可能你也需要重播预测。所以它与整个迁移非常相似,需要很长时间。在目前的情况下,如果我每年只需要这样做一次,这并不是问题。将这些数据存储在事件存储器中的另一个问题是要么从那里流式传输,要么需要将其复制以便为其提供服务。后者并不总是一个好的解决方案,因为有时需要花费太多时间来复制,并且为了保存需要流式传输的数据,否则你将会非常快地失去内存。所以事件存储应该支持流式附件。

另一种解决方案可以保留文件中的相关大数据并显示类似404的内容,或者因为这个和那个文件而被删除。我经常看到这个。在这种情况下,可以将事件保存在存储器中,例如可以添加ContentRemoved事件,您可以在其中选择原因。另一个选项是隐藏已删除的文件,所以它不会被应用程序列出,这通常也是我猜的。这个解决方案也有缺点。采用这种方法迁移更为复杂,因为您需要移动事件存储和文件。如果您意外移除了一个文件,除非在备份中有该文件,否则以后无法撤消该文件。这可以通过延迟几天的实际文件删除来解决,所以如果你改变了主意,你可以撤消它。只有清空垃圾,才能删除垃圾和文件的其他选项。

我认为这两种解决方案都值得考虑,并且可能取决于实际项目哪个更适合。