mongo分片

本文介绍了如何搭建MongoDB分片式集群,主要用于处理GPS数据。讨论了片键的选择,强调基数较大的字段作为片键的重要性,并以order_id为例进行说明。详细步骤包括身份验证、启用分片、指定分片集合和字段,以及如何验证分片效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.搭建mongo分片式集群主要是用来处理用户行驶的gps数据信息。gps集合的字段有member_id,order_id,longitude,latitude,reporttime这5个数据字段。搭建方式:https://jeremyxu2010.github.io/2018/10/mongodb高可用集群部署/#启用用户认证登录,可以参考mongo中文社区和官方文档。

2.片键及片键选择

设置分片时,需要从集合里面选一个键,用该键的值作为数据拆分的依据,这个键成为片键。片键选择对于分片式集群有非常重大的意义,但在实际接触的案例中往往很多人选择了错误的片键,导致集群性能低下。

chunk定义的是一个连续的片键值范围,文档中的片键字段取值在这个范围内时,文档就属于这个chunk,例如年龄为片键的话,可能chunk会将其拆成100个,即0到99岁年龄。

a.取值基数直接决定了一共有多少个chunk,从而间接影响到分片的数据量/压力分布。选择时应该尽可能选择基数较大(即可选值较多)的字段作为片键

在gps集合里,我选择order_id作为gps集合里的片键,分片集群节点为三个。

3.分片操作

a.use admin ; 切换到admin库

b.db.auth('user','password');身份验证

c.sh.enableSharding('gps') ; 先指定某个分片的数据库

d.sh.shardCollection('gps.gps_data',{'order_id':1}) ; 指定分片的集合和字段,字段得先建好索引,不然mongo会自动帮你建立索引,索引的种类有很多种,可以查看官方文档。

4.查看分片信息及验证

命令sh.status(),可以查看分片后的信息。如下图所示chunks,均匀分布到了三个节点内。如果查看后,分片不成功的话,可能是chunksize的值太大,默认为64M,可以将其改成1M后,即可分片成功。

命令:use config
                       db.settings.save( { _id:"chunksize", value: 1 } )

简单验证是否分片成功

use databaseName;
db.collectionName.stats().sharded #简单的返回true或者false

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值