Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 724|回复: 0

mongodb集群快速插入数据

[复制链接]

238

主题

288

帖子

1925

积分

超级版主

Rank: 8Rank: 8

积分
1925
QQ
发表于 2015-3-18 13:05:20 | 显示全部楼层 |阅读模式
做了mongodb集群, 如果collection按照_id做片键来分片, 那么默认插入数据的时候是插入到某一台机器的某一个块中, 因为_id是递增的, 所以新插入的数据会被分配到同一个块, 这个块的数据范围(根据片键)是某个值到无穷大, 而新的数据的_id肯定比以前的都要大.


要平均分配到所有的分片上, 应该使用hashed索引, 然后以这个字段为片键


> use cc




首先创建散列索引, 这个片键最好是唯一的, 例如用时间来做片键, hash值会比较随机
> db.cc.ensureIndex({"datetime": "hashed"})




然后对数据库启用分片
> sh.enableSharding("cc")




然后对集合分片, 根据散列索引
> sh.shardCollection("cc.cc", {"datetime": "hashed"})




之后插入的数据会平均分配到所有分片上

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2020-2-23 12:51 , Processed in 0.022002 second(s), 11 queries , Redis On.

快速回复 返回顶部 返回列表