我有一个时间敏感数据库。是否有最佳实践"在x时间后删除一个条目?大概30分钟,但也许24小时。我已经考虑了间隔和内容,但这似乎是一种懒惰的解决方案,会迅速占用资源。
答案 0 :(得分: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
是文档应保留在数据库中的最小毫秒数,而INTERVAL
是您希望执行清除的频率。