软件下载吧文章资讯

分类分类

MongoDB分片键的选择和案例实例详解

2024-02-21 13:55作者:下载吧

前言

分片键选择不好,应用程序就无法利用分片集群所提供的诸多优势。在这种情况下,插入和查询的性能都会显著下降。下决定时一定要严肃,一旦选择了分片键,就必须坚持选择,分片键是不可以修改的。要让分片键提供好的体验,部分源自了解怎样才算一个好的分片键。

本文将详细介绍关于MongoDB分片键的选择和案例,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

MongoDB版本:3.6

一、分片键类别

1.升序片键

升序片键例如:日期时间字段、自增字段。

2.随机分发片键

随机分发片键例如:用户名、邮件名、UUID、MD5值或者是其它的一些没有规律的值的列。

3.基于位置的片键

基于位置的片键例如:IP、经纬度、居住地址等。

二、分片策略

1.范围分片

创建分片时,只在主分片上创建了一个块{ "username" : { "$minKey" : 1 } } -->> { "username" : { "$maxKey" : 1 } } on : rs-a Timestamp(1, 0)

MongoDB分片键的选择和案例实例详解

至少得3个不同的值才会进行块切分,相同的值只会在一个分片块中。比如对一个name字段进行范围分区,如果一直往name字段插入”a”,那么它会一直存储主分片的{ "username" : { "$minKey" : 1 } } -->> { "username" : { "$maxKey" : 1 } }中,直到name出现三个不同的值,比如“a”,“b”,“c”这个时候就会进行分片。当然这只是测试,现实中不会对这种粗粒度的字段单独做分片。

2.hashed分片

创建分片时,默认在每个分片上创建了两个数据块。但是当前每个块上面是没有数据的。

MongoDB分片键的选择和案例实例详解

3.组合分片

组合分片是比较好的一种分片的选择,好的组合分片可以同时解决热点和随机读IO问题。例如:

sh.shardCollection("test.bbbb",{"username":1,"_id":1});
展开全部

相关文章

说两句网友评论
    我要跟贴
    取消