python - mongodb - 需要处理海量数据,只有一个服务器实例

标签 python mongodb pymongo

我正在尝试在 mongodb 中处理大约一亿条记录。基本上,每个 key (处方号)对应大约 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_"
    }
]

我是否因为尝试在一个服务器实例上运行此数据处理而感到疯狂? (有趣的是,当我运行 top 时,我的 CPU 和 RAM 似乎并未达到最大。)

如果有任何建议,我将不胜感激。

谢谢!!

最佳答案

添加索引

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

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

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

关于python - mongodb - 需要处理海量数据,只有一个服务器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237850/

相关文章:

javascript - 如何获取选择选项的值,并使用它来查询数组,以填充另一个输入

python - 尝试传递字符串以通过 Django Rest Framework url 进行查询

python - 检查要插入的字符串是否提供预期的占位符

python - 使用 python 和 mongodb 进行异步日志记录

javascript - Mongoose 按数组条目 ($in) 进行搜索的行为与 MongoDB Atlas 不一致

mongodb - pymongo 副本集客户端连接是否支持自动故障转移?

python - 查找字符串中的行数

python - 获取 pandas 列表列中元素频率的有效方法

python - 无法将从 MongoDB 检索到的 json 值返回到 python flask 中的 HTML 页面

python - 在设计 python 类时,使用 getters/setters 和属性的良好风格是什么