V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
dtgxx
V2EX  ›  MongoDB

大佬们,麻烦进来看下 [使用 mongoimport 和 pymongo 插入遇到的问题]

  •  
  •   dtgxx · 2020-06-30 11:50:30 +08:00 · 3931 次点击
    这是一个创建于 1368 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同样的数据,使用 mongo 自带命令 mongoinsert 导入,速度很快,每秒 15000 条左右,60 亿数据占空间 300G 。 我手写的代码,使用 pymongo 的 insert_one 方法插入同样的数据,速度很慢,每秒 300 条左右,因为要根据数据插入不同的集合,所以只能使用 insert_one 。 而且插入后的数据,占空间很大,60 亿占 2T 空间。

    找了很多原因,不知道性能和空间占用为什么差这么大,都使用的默认 snappy 压缩。如果说性能是 insert_one 导致的,那一样的数据量一样的数据,占空间为什么差距这么大。。( PS.mongoinsert 导入一个集合,我的程序导入之后,有几千个集合。不知道这个有没有原因)

    希望大佬们给些建议,感谢感谢!!

    5 条回复    2020-08-01 23:34:47 +08:00
    lpts007
        1
    lpts007  
       2020-06-30 11:55:35 +08:00   ❤️ 1
    英文网站去问问看,附上代码,数据结构。
    275761919
        2
    275761919  
       2020-06-30 17:05:20 +08:00
    对数据分类用 insert_many 不行吗?
    dtgxx
        3
    dtgxx  
    OP
       2020-07-01 10:05:48 +08:00
    @275761919 #2 有点难,不过多少会有点效果,效果不大。如果每次处理 1 万条数据,数据几乎分布在 3-4000 个集合当中。然后一次要大并发做 3-4000 次 insert_many
    lpts007
        4
    lpts007  
       2020-08-01 14:40:05 +08:00 via Android
    解决了吗
    dtgxx
        5
    dtgxx  
    OP
       2020-08-01 23:34:47 +08:00
    @lpts007 #4 把数据处理成文件,分好文件夹,并行的用 mongoinsert 导入了,主要是只有一个机器,mongo 性能确实数据量越大就越慢,没办法,导了很久。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3939 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:12 · PVG 13:12 · LAX 22:12 · JFK 01:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.