首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代3亿条mongo数据库记录需要几个小时

迭代3亿条mongo数据库记录需要几个小时
EN

Stack Overflow用户
提问于 2014-07-09 16:49:21
回答 1查看 1.1K关注 0票数 0

我正在使用mongo java API迭代来自mongo从站的整个mongo文档。Mongo Server: 2.4.10备机记录数:3亿。我有一个mongo主人,一个mongo奴隶。(未进行切分)

mongo从服务器每10秒复制一次非常频繁的2000次插入和删除操作。

迭代耗时超过10个小时。我的目标是获取集合中的每条记录,创建一个csv并将其加载到redshift。

代码语言:javascript
复制
DB db = null;
DBCursor cursor = null;
mongo = new MongoClient(mongoHost);
mongo.slaveOk();
db = mongo.getDB(dbName);
DBCollection dbCollection = db.getCollection(dbCollectionName);
cursor = dbCollection.find();

while (cursor.hasNext()) {
    DBObject resultObject = cursor.next();
    String uid = (String) ((Map) resultObject.get("user")).get("uid");
    String category = (String) resultObject.get("category");
    resultMap.put(uid, category);

    if (resultMap.size() >= csvUpdateBatchSize) {
        //store to a csv - append to an existing csv
    }

}

有没有办法将迭代时间降低到1小时以下?基础设施的改变也可以通过增加分片( ..Like )来完成。请提个建议。

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 04:18:04

你有没有考虑过在你的集合上执行一个并行的mongoexport?

如果你有办法用一个查询来划分你的数据(类似于对id或索引字段进行取模),并将其作为标准输入传递给你的程序。

然后,您的程序将把每个文档作为一个JSON行进行处理,您可以将其加载到使用GSON或其他类似库表示文档结构的指定对象中

并最终在该对象上运行逻辑。

使用mongoexport并添加并行性可以大大提高您的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24649159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档