2017-10-14 56 views
0

我想將一些數據存儲在相對較大的文件中(每個文件幾GB)。我想使用事件採購並保存與這些文件相關的事件,例如FileCreated:標題,描述,時間戳,作者,個人,加密密鑰等。過了一段時間後,一些文件將不再需要,並佔用大量空間。所以爲了釋放空間,我需要刪除它們。這樣做是有問題的,因爲我將在事件存儲中擁有歷史記錄,而不是文件系統中的文件。有沒有辦法保持完整性,並以某種方式刪除兩者?還是有這個問題的最佳做法?事件源代碼 - 刪除事件相關文件

回答

0

由於我沒有得到答案,我試着自己回答。

可以從歷史記錄中刪除事件,您需要創建新的事件存儲並篩選要刪除的相同集合標識的事件。完成後,您可以切換到新的事件存儲並刪除舊的事件。可能你也需要重播預測。所以它與整個遷移非常相似,需要很長時間。在目前的情況下,如果我每年只需要這樣做一次,這並不是問題。將這些數據存儲在事件存儲器中的另一個問題是要麼從那裏流式傳輸,要麼需要將其複製以便爲其提供服務。後者並不總是一個好的解決方案,因爲有時需要花費太多時間來複制,並且爲了保存需要流式傳輸的數據,否則你將會非常快地失去內存。所以事件存儲應該支持流式附件。

另一種解決方案可以保留文件中的相關大數據並顯示類似404的內容,或者因爲這個和那個文件而被刪除。我經常看到這個。在這種情況下,可以將事件保存在存儲器中,例如可以添加ContentRemoved事件,您可以在其中選擇原因。另一個選項是隱藏已刪除的文件,所以它不會被應用程序列出,這通常也是我猜的。這個解決方案也有缺點。採用這種方法遷移更爲複雜,因爲您需要移動事件存儲和文件。如果您意外移除了一個文件,除非在備份中有該文件,否則以後無法撤消該文件。這可以通過延遲幾天的實際文件刪除來解決,所以如果你改變了主意,你可以撤消它。只有清空垃圾,才能刪除垃圾和文件的其他選項。

我認爲這兩種解決方案都值得考慮,並且可能取決於實際項目哪個更適合。