MongoDB学习笔记——Sharding

作者: IIIns | 来源:发表于2018-09-25 15:04 被阅读2次

1、Sharding Key

Sharding key决定了shard在对document进行分发时的策略,它是由在目标collection中每个document中都存在的字段组成,当对非空collection进行分片时,collection必须有以sharding key开头的索引。

  1. Ranged Shard Key:根据 shard key 的取值,它把数据切分成连续的几个区间。取值相近的纪录会放进同一个 shard 服务器。好处是查询连续取值纪录时,查询效率可以得到保证。当数据库查询语句发送到 mongos 中时,mongos 会很快的找到目标 shard,而且不需要将语句发送到所有的 shard 上,一般只需要少量的 shard 就可以完成查询操作。缺点是不能保证数据的平均分配,在数据插入和修改时会产生比较严重的性能瓶颈。
  2. Hashed Shard Key:与Ranged Shard Key 对应的一种被称之为 Hashed Shard Key,它采用字段的索引哈希值作为 shard key 的取值,这样做可以保证数据的均匀分布。在 mongos 和各个 shard 集群之间存在一个哈希值计算方法,所有的数据在迁移时都是根据这个方法来计算数据应当被迁移到什么地方。当 mongos 接收到一条语句时,通常他会把这条语句广播到所有的 shard 上去执行。

选择字段作为sharding key时,应该考虑该字段一下几个参数:

  1. Cardinality(基数):该字段的基数范围,可以理解为该字段可能出现的值的个数。选择尽量大基数的字段,这样才可能尽量多的分发到多个chuank(如果基数为5,只可能分发到5个chuank,也就最多分发到5个shard中),更好地在shard间进行chuank迁移。如果非要使用低基数字段作为key,可以考虑加入大基数字段作为复合索引。
  2. Frequency(频率):该字段有多少相同值得记录。由于相同值得key只能被分发到同一个chuank中,所以如果一个有一些值得频率过高的话就会形成junbo chuank(巨型块),不可切分,严重影响水平扩展。如果非要用频率高的字段,可以考虑加入低频值的字段作为复合索引。
  3. Monotonically(单调性):该字段是否单调增长或减小。在使用ranged key时,尽量不要取单调性的字段,不然后加入的数据只会往最后或者最前的shard中插入,不断增大边缘shard的大小。因此尽量使用hashed sharding。

相关文章

  • MongoDB学习笔记——Sharding

    1、Sharding Key Sharding key决定了shard在对document进行分发时的策略,它是由...

  • mongodb分片

    mongodb 分片: Sharding组件: sharding最最最关键的是sharding key(片键) s...

  • MongoDB Sharding(分片)笔记

    Sharding 是一种将数据分散到多台主机上的方法,使得 MongoDB 能够支持处理超大数据集和超高吞吐量。实...

  • MongoDB Sharding

    介绍 Sharding Key Sharding key必须是在对应的collection当中所有的文档都存在的f...

  • MongoDB之分片集群(Sharding)

    MongoDB之分片集群(Sharding) 一、基本概念 分片(sharding)是一个通过多台机器分配数据的方...

  • MongoDb Sharding 介绍

    MongoDB有三大核心优势:【灵活模式】+【高可用性】+【可扩展性】,通过JSON文档来实现灵活模式,通过复制集...

  • Mongodb Sharding 搭建

    前面我们介绍了mongodb的架构。下面我们就来实际搭建一个mongodb sharded cluster。 首先...

  • {MongDB} MongoDB Sharding

    概念 MongoDB Shard Cluster 分片集群由以下三个部分组成:Shard:分片mongos:路由c...

  • Mongodb高可用集群搭建

    方案选项 Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Sl...

  • mongodb集群Replica Set搭建

    MongoDB集群有三种搭建方案,分别为Replica Set / Sharding / Master-Slave...

网友评论

    本文标题:MongoDB学习笔记——Sharding

    本文链接:https://www.haomeiwen.com/subject/wokloftx.html