mongodb - 只需一个服务器实例即可处理海量数据

时间:2012-09-02 16:43:06

标签: python mongodb pymongo

我正在尝试处理mongodb中的大约一亿条记录。基本上,每个密钥(处方号)响应大约1300条记录(不是唯一的)。这些密钥已经编入索引。

现在,我正在使用pymongo查询特定键以返回这些结果集,以便可以使用python处理它们。

查询mongo是最大的瓶颈。每次查询大约需要<20秒> 。按照目前的速度,查询每条记录需要 400小时

当我'解释'我的查询时,这就是我的样子:

db.prescriptions.find({'key':68565299}).explain()

                            {
    "cursor" : "BasicCursor",
    "nscanned" : 103578563,
    "nscannedObjects" : 103578563,
    "n" : 1603,
    "millis" : 287665,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {

    }
}

这表明我已经有了索引

> db.prescriptions.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "ns" : "processed_data.prescriptions",
        "name" : "_id_"
    }
]

我试图在一个服务器实例上运行此数据处理是不是我的摇杆? (有趣的是,当我跑到最顶层时,我的CPU和RAM似乎没有达到最大限度。)

我很感激任何建议。

谢谢!

1 个答案:

答案 0 :(得分:3)

添加索引

从查询中的解释结果来看,“key”上没有索引,需要添加一个。

> db.prescriptions.addIndex({'key': 1});

如果mongo报告任何类型的警告,您需要采取行动