mongodb 片键
mongodb 片键
mongodb的片键是很难控制的,没有完美的片键,只能均衡即可;
片键的方案:
1.id的hashed:
作为第一个方案,你可以使用数据文档_id的哈希作为片键。
这个方案能够使读和写都能够平均分布,并且它能够保证每个文档都有不同的片键所有数据块能够很精细。
似乎还是不够完美,因为这样的话对多个文档的查询必将命中所有的分片。虽说如此,这也是一种比较好的方案了。
2.多租户混合索引:
如果想击败哈希索引模式,那么你需要将关联的文档在索引中尽可能聚集在一起的方法。在Bugsnag,我们通过project聚合文档,因为在我们的业务场景中,我们的app大部分的查询请求都在project范围内。所以对于你的app来说你得指定适合你的聚合方式。
但是我们不能简单地使用projectID作为片键,因为那会导致巨大块的产生,所以我们引入了_id来将大project打散到多个块中。这些打散的块仍旧是索引连续的,所以仍然会分布在用一个分片上。
总结:
找一个好的片键是很难的,不过这真的只有两种方案。如果在应用中找不出一个好的聚合键,那么对_id做哈希吧。如果你能够找到,那么将它与_id
聚合以避免巨大块的产生。请记住无论你使用何种聚合键,它都需要能够将读和写平均分布以充分利用集群中的每个节点。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
2016-01-15 javascript 字典类型的使用