我正在使用mongo-db进行实时分析,我得到了500万 每天的数据点将在未来增加到1000万 最小。
我的问题是:
上限集合是循环的,因此我的数据将被覆盖 它到达上限,我不想丢失这些数据。
那么我应该遵循什么方法来保留旧数据并避免这些数据被覆盖但仍然可以使用上限,因为它们很快?
我正在考虑像这样的算法:
答案 0 :(得分:5)
我认为你可能会以错误的方式解决这个问题。为什么不为每个时间段创建一个新的集合,而不是试图“破解”上限集合?
因此,如果您每天可以处理5-10M个数据点,那么只需创建一个集合,并将该日作为名称的一部分。您将获得11月1日db.data20101001
和11月2日db.data20101002
之类的内容。
当您停止写入旧数据时,数据会“掉落”内存并停止使用RAM。通过相同的衡量标准,当前日(也许可能是前一天)的索引可能总是在RAM中,因此插入将继续保持快速,同时仍保持历史记录。
此解决方案所需的额外步骤:
db.data20100901.drop()
。您不会回收空间,但Mongo将开始使用“旧”数据文件。因此,您可以通过选择活动天数来有效管理收藏的大小。