首页 > 数据库 >15. MongoDB系列之选择片键

15. MongoDB系列之选择片键

时间:2022-10-17 20:22:06浏览次数:79  
标签:15 MongoDB sh 000 哈希 分片 升序 片键

1. 片键类型
1.1 升序片键

升序片键通常类似于date或ObjectId--随着时间稳步增长的字段。
这种模式通常会使MongoDB更难保持块的平衡,因为所有的块都是由一个分片创建的。

1.2 随机分发的片键

随机分发的键可以是用户名,电子邮件地址,UUID,MD5哈希值等
由于写操作是随机分发的,因此分片应该以大致相同的速度增长,从而减少需要进行的迁移操作数据。

1.3 基于位置的片键

基于位置的片键可以是用户的IP、经纬度或者地址。

> sh.addShardToZone("shard0000", "USPS")
> sh.addShardToZone("shard0000", "Apple")
> sh.addShardToZone("shard0002", "Apple")
> sh.updateZoneKeyRange("test.ips", {"ip": "056:000:000:000"}, {"ip": "057:000:000:000"}, "Apple")
2. 片键策略
2.1 哈希片键

为了尽快的加载数据,哈希片键是最好的选择。如果在大量查询中使用升序键,但又希望写操作随机分发,那么哈希片键是不错的选择。但是我们无法使用哈希片碱执行指定目标的范围查询。

> db.users.createIndex({"username": "hashed"})
> db.shardCollection("app.users", {"username": ""hashed})
2.2 GridFS的哈希片键

在files_id字段上创建一个哈希索引,呢么每个文件都会在集群中随机分发,并且同一个文件将始终被包含在单个块上。

> db.fs.chunks.ensureIndex({"files_id": "hashed"})
> sh.shardCollection("test.fs.chunks", {"files_id": "hashed"})
2.3 多热点

以下描述的技术会创建多个热点(最好是每个分片上都有几个热点),以便写操作在集群中均匀分发,但在同一个分片上写操作是递增的。
为了实现,需要复合片键:第一个键值是粗略的随机值,技术较小,第二个键值是一个升序键。
可以将此配置想象成每个块都是一个升序文档的栈,每个分片上有多个栈,每个栈都是递增的,直到块被拆分。

欢迎关注公众号算法小生沈健的技术博客

标签:15,MongoDB,sh,000,哈希,分片,升序,片键
From: https://www.cnblogs.com/shenjian-online/p/16800497.html

相关文章

  • C++ Primer 15.9文本查找程序
    可以通过查询语句的组合进行检索,VS2015.main函数,读取存有数据的文件,进行检索。提供两种入口。查词,与按照表达式查询。1#include<iostream>2#include<fstream>3......
  • ARC151C 01 Game
    ARC151C01Game前言赛时机房大佬们以及标算都用SG函数做的,而我用的是最朴素的大力分类讨论,wa了十二发才过,写下这篇题解记录我的想法,纪念一下这场比赛。题目简意\(......
  • python进阶之路15 之异常处理、生成器相关
    异常捕获处理1.异常异常就是代码运行报错行业术语叫bug代码运行中一旦遇到异常会直接结束整个程序的运行我们在编写代码的过程中要尽可能避免2.异常分类......
  • [题解] Atcoder Regular Contest ARC 151 A B C D E 题解
    点我看题昨天刚打的ARC,题目质量还是不错的。A-EqualHammingDistances对于一个位置i,如果\(S_i=T_i\),那么不管\(U\)的这个位置填什么,对到\(S\)和\(T\)的海明距离增量......
  • 2022.10.15 总结
    C中位数定义为第\(\lfloor\dfrac{n}{2}\rfloor+1\)个数。现有一个数组\(a\),\(n\le10^5\).对于\(1\lel\ler\len\),求区间\([l,r]\)的中位数,把这些中位数......
  • 数据集 | 2015年国内主要城市年度统计指标数据
    下载数据集请登录爱数科本数据集包括了2015年我国36个主要城市的年度数据,包括产值、人口、就业、教育、医疗、经济贸易、房地产投资等方面。可用于数据可视化分析。1.字段......
  • 轻松通过OPC UA协议访问西门子1500数据
    01 引言 OPCUA是什么?OPC通信标准的核心是互通性(Interoperability)和标准化(Standardization)问题。传统的OPC技术在控制级别很好地解决了硬件设备间的互通性问题,......
  • QFramework v1.0 使用指南 架构篇:15. 内置工具:TypeEventSystem
    QFramework除了提供了一套架构之外,QFramework还提供三个可以脱离架构使用的工具TypeEventSystem、EasyEvent、BindableProperty、IOCContainer。这些工具并不是有意提......
  • camunda_15_oracle
    按照Camunda官方文档,生产环境优先推荐Oracle和Postgresql,当然MySQL和SQLServer也是支持的.​​​官方参考架构文档​​前面博文已经介绍了使用Postgresql作为数据库,......
  • 8.MongoDB系列之创建副本集(一)
    1.复制简介在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃......