2014-10-08 40 views
0

我有一個時間敏感數據的數據庫。 x時間後刪除條目是否有「最佳做法」?大概30分鐘,但也許24小時。我已經考慮過間隔時間和東西,但這似乎是一個懶惰的解決方案,可以快速消耗資源。在Meteor應用程序的特定時間集合中刪除mongo條目

+0

您是否考慮在檢索數據時過濾數據,而不是實際刪除數據? – stubailo 2014-10-08 00:34:02

+0

我有,但與數據量有關的可能性,它會很快凌亂。 – DustinRiley 2014-10-08 01:28:33

回答

2

間隔是正確的解決方案。但是,爲了不消耗資源,以及爲了防止服務器重新啓動,請不要爲要刪除的每個元素創建新的時間間隔。相反,運行一個全球性的間隔,以便清除在一定時期內的所有元素:

var clear = function() { 
    var min = new Date(new Date() - DURATION); 
    Documents.remove({ 
    createdAt: {$lt: min} 
    }); 
}; 


Meteor.startup(function() { 
    clear(); 
    Meteor.setInterval(clear, INTERVAL); 
}); 

哪裏DURATION是毫秒文件應留在DB的數量降到最低,並且INTERVAL是你想多長時間進行清除。

+0

好的。聽起來不錯。謝謝您的幫助!我已將其標記爲接受的答案。 – DustinRiley 2014-10-08 15:53:10

+0

流星在參考什麼?我是否需要擁有這個依賴才能使其工作?謝謝!這正是我需要的。 – AlexanderGriffin 2016-09-09 18:58:10

+0

@AlexanderGriffin:我想我不明白你的問題。代碼示例使用Meteor API,但我描述的方法當然可以在任何環境中使用。 – 2016-09-09 19:28:01