Python mongodb-只需一个服务器实例即可处理海量数据
我试图在mongodb中处理大约一亿条记录。基本上,每个键(处方号)响应大约1300条记录(不是唯一的)。这些键已编入索引。 现在,我正在用pymongo查询特定的键,以返回这些结果集,这样就可以用python处理它们 质疑mongo是最大的瓶颈。每次查询大约需要20秒。按照目前的速度,查询每条记录需要400小时 这就是我“解释”我的查询时的样子: 这表明我已经准备好了索引Python mongodb-只需一个服务器实例即可处理海量数据,python,mongodb,pymongo,Python,Mongodb,Pymongo,我试图在mongodb中处理大约一亿条记录。基本上,每个键(处方号)响应大约1300条记录(不是唯一的)。这些键已编入索引。 现在,我正在用pymongo查询特定的键,以返回这些结果集,这样就可以用python处理它们 质疑mongo是最大的瓶颈。每次查询大约需要20秒。按照目前的速度,查询每条记录需要400小时 这就是我“解释”我的查询时的样子: 这表明我已经准备好了索引 > db.prescriptions.getIndexes() [ { "v" : 1,
> db.prescriptions.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "processed_data.prescriptions",
"name" : "_id_"
}
]
我试图在一个服务器实例上运行此数据处理,这是不是让我发疯了?
(有趣的是,当我运行top时,我的CPU和RAM似乎没有达到最大值。)
如蒙指教,我将不胜感激
谢谢 添加索引
从查询中的解释结果来看,“key”上没有索引,您需要添加一个
> db.prescriptions.addIndex({'key': 1});
如果mongo报告了任何类型的警告,您需要对其采取行动您的解释显示了完整的表扫描,没有使用索引。显示您创建的索引
db.prescriptions.getIndexes()
(将其添加到问题中)。另外,“基本上,每个键都有1300条自己的记录”意味着什么?这本身就没有意义。1300条记录响应一个键-它们不是唯一的。>db.prescriptions.getIndexes()[{“v”:1,“key”:{“id”:1},“ns”:“processed_data.prescriptions”,“name”:“_id”}]谢谢AD7six。我意识到,尽管使用python包装器运行ensureindex,但我从未收到通知我磁盘空间不足的警告。我要再添加一些磁盘空间,然后再试一次。我真的很感谢你的帮助:)
> db.prescriptions.addIndex({'key': 1});