加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 系统 > 正文

MongoDB分片键怎么挑拣?有哪些类型你知吗?

发布时间:2022-04-22 10:51:06 所属栏目:系统 来源:互联网
导读:本文主要给大家的介绍的关于MongoDB分片键的选择,对于不清楚MongoDB分片键类别有哪些和不知道如何挑选MongoDB分片键的朋友可以参考,下面我们一起来了解一下MongoDB分片键。 分片键选择不好,应用程序就无法利用分片集群所提供的诸多优势。在这种情况下,插
       本文主要给大家的介绍的关于MongoDB分片键的选择,对于不清楚MongoDB分片键类别有哪些和不知道如何挑选MongoDB分片键的朋友可以参考,下面我们一起来了解一下MongoDB分片键。
 
       分片键选择不好,应用程序就无法利用分片集群所提供的诸多优势。在这种情况下,插入和查询的性能都会显著下降。下决定时一定要严肃,一旦选择了分片键,就必须坚持选择,分片键是不可以修改的。要让分片键提供好的体验,部分源自了解怎样才算一个好的分片键。
 
       一、分片键类别
 
       1.升序片键
 
       升序片键例如:日期时间字段、自增字段。
 
       2.随机分发片键
 
       随机分发片键例如:用户名、邮件名、UUID、MD5值或者是其它的一些没有规律的值的列。
 
       3.基于位置的片键
 
       基于位置的片键例如:IP、经纬度、居住地址等。
 
       二、分片策略
 
       1.范围分片
 
       创建分片时,只在主分片上创建了一个块{ "username" : { "$minKey" : 1 } } -->> { "username" : { "$maxKey" : 1 } } on : rs-a Timestamp(1, 0) 。
 
       2.hashed分片
 
       创建分片时,默认在每个分片上创建了两个数据块。但是当前每个块上面是没有数据的。
 
       3.组合分片
 
       组合分片是比较好的一种分片的选择,好的组合分片可以同时解决热点和随机读IO问题。例如:
 
sh.shardCollection("test.bbbb",{"username":1,"_id":1});
       4.标签分片
 
       比如对于一些日志非查询文档,可以通过标签将其只插入到某个分片中。例如
 
sh.addTagRange("test.log",{ "_id" : { "$minKey" : 1 } }, { "_id" : { "$maxKey" : 1 } },"tag_rs-a");
       可以在config库中的tag文档中查看设置的标签信息。
 
use config
 
db.tags.find();
       三、标签
 
       可以通过标签将特定范围的数据在指定的分片中。
 
       将{ "_id" : 18000 } -->> { "_id" : 26000 }范围的数据保存到rs-a的分片上,这部分数据跨越了两个数据块。
 
       1.为分片指定tag
 
sh.addShardTag("rs-a","tag_rs-a");
 
sh.addShardTag("rs-b","tag_rs-b");
 
sh.addShardTag("rs-c","tag_rs-c");
       2.创建规则
 
sh.addTagRange("test.person",{ "_id" : 18000 }, { "_id" : 26000 },"tag_rs-a");
  
       数据{ "_id" : 18000 } -->> { "_id" : 26000 }已经被移动到了rs-a分片上。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读