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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有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安装与使用,安装插件,快捷键,默认配置