<分区>
我正在使用 mongo-db 进行实时分析,我得到了 500 万 每天的数据点, future 将增加到 1000 万 至少。
我的问题是:
Capped 集合是循环的,所以我的数据将在之后被覆盖 它达到了上限,我不想丢失这些数据。
那么我应该遵循什么方法来保留旧数据并避免这些数据被覆盖但仍然能够使用上限,因为它们很快?
我在用这样的算法思考:
- 将当前集合重命名为旧集合并删除当前集合。
- 将 old 附加到搜索友好(无上限)集合
<分区>
我正在使用 mongo-db 进行实时分析,我得到了 500 万 每天的数据点, future 将增加到 1000 万 至少。
我的问题是:
Capped 集合是循环的,所以我的数据将在之后被覆盖 它达到了上限,我不想丢失这些数据。
那么我应该遵循什么方法来保留旧数据并避免这些数据被覆盖但仍然能够使用上限,因为它们很快?
我在用这样的算法思考:
最佳答案
我认为您可能采用了错误的方式。与其尝试“破解”上限集合,不如为每个时间段创建一个新集合?
因此,如果您每天可以处理 5-10M 数据点,那么只需创建一个以日期作为名称一部分的集合。您会在 11 月 1 日得到类似 db.data20101001
的信息,然后在 11 月 2 日得到类似 db.data20101002
的信息。
当您停止写入旧数据时,这些数据将从内存中“掉落”并停止使用 RAM。按照相同的衡量标准,当天(可能还有前一天)的索引可能始终在 RAM 中,因此插入将继续快速进行,同时仍保持历史记录。
此解决方案所需的额外步骤:
db.data20100901.drop()
。您不会回收空间,但 Mongo 将开始使用“较旧”的数据文件。因此,您可以通过选择活跃天数来有效地管理收藏的大小。
关于c - mongodb 作为循环数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070833/