mongodb 分片键的特点及分片原则

mongodb 分片键的特点,选择条件及分片原则

1、集群cluster:包含多个分片
分片shard:包含多个chunk
块chunk:包含多个文档
文档doc:包含shard key 的一行数据
片键shard key:文档中的一个字段

复制集

分片demo:

2._id 自增作为片键的特点,邮件业务:
块的基数大小:要非常大,避免一个chunk太大
写分布:_id 片键自增,连续写到chunk1,chunk2,导致chunk1,chunk2过大,副本移动数据慢
定向查询:一般不用邮件id来查邮件


3._id hashed作为片键的特点,邮件业务:
块的基数大小:id hashed 后也足够大,随机均衡分布在不同的分片上
写分布:_id 随机均衡分布在不同的分片上
定向查询:一般不用邮件id来查邮件,所以每次查询都要到所有节点查询数据,比较慢


4._userid作为片键的特点,邮件业务:
块的基数大小:太小,一个用户的邮件都写到一个块里,时间久了,一个块的数据非常大,不好移动
写分布:_id 随机均衡分布在不同的分片上
定向查询:一般不用邮件id来查邮件,所以每次查询都要到所有节点查询数据,比较慢

组合片键:

5. {userid:1,time:1}作为组合片键的特点,邮件业务:
块的基数大小:基数足够大
写分布:能分布写到不同的块分片上
定向查询:一般会用userid来查数据,能很好的定位到分片上查询数据,不用查询所有的分片;


综合总结:组合片键来给mongodb分片比较好,能满足基数比较大,写分布也可以写到不同的分片上,也可以根据业务常用的使用情景查询部分节点就可以查到数据,不用查询所有节点提高查询速度。

 

mongodb 块的原因:

刷盘机制,缓存机制100秒,日志文件,刷盘时间60秒后刷到磁盘

写比较多没有查询,可以修改缓存100秒的时间,修改大,这样提高写的速度,多次提交,减少刷盘此时,每次刷盘的数据量会增大

 

https://www.abp.io/
application
domain

https://www.cnblogs.com/laozhang-is-phi/p/9495618.html

posted @   大树2  阅读(550)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2017-11-06 用Python从零开始实现K近邻算法
2017-11-06 Sublime Text 3安装与使用,安装插件,快捷键,默认配置
点击右上角即可分享
微信分享提示