如何理解MongoDB中的shard分片

如何理解MongoDB中的shard分片,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为泾川企业提供专业的网站建设、网站制作,泾川网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

阅读目的:深刻的了解MongoDB的分片机制

阅读关键: 无比要对MongoDB的与分片 shard有关的概念有清楚的了解。

 1:   Shard介绍

        shard指的是水平方向的多节点的数据分散的存储,说的更简单一点,就是一台机器上可能装不下的数据,我们

装到多台机器上去,比如,我们将全国的省份证的信息,存储到不同的Shard Server中间去,这里的Shard Server,就是每一个分布式的Mongo机器。

        应用的程序可以通过mongos process 登陆到shard集群之中,MongoPress 进行一个路由上的调度。查询,请求的过程也是如此。 面对使用者只有一层一个节点。

    

2: 负载均衡和失效切换

        当某个shard的负载超过一定阙值后,就会自动的重新分发数据,用来保证系统的负载均衡。更简单的话来形容,就是

写入的时候如果向某一台机器上去写,超过了机器自身的能力了,就会重新的分发数据,与之对应的Hbase,通常会出现单台

写入的热点问题,目前对于Mongo的处理机制还未知。

      在一个通常的配置之中,每一个Shard中都该包含了2个以上节点的设备组,设备组的名字通常称为 replica.set,replica.set有N台服务器,在其中有一个为主,其他的为辅助,一旦其中的一个挂掉以后,会自动重启将一台服务器切换为

主服务器。

3:

    Shard架构图:

        如何理解MongoDB中的shard分片

4 :shard key 

            要实现分片功能,我们需要指定集合的分片key,相当于数据库的分区字段,

这个分片key通常需要创建一个索引,分片key可以由一个或则多个字段构成

5: chunks

        Chunks是一个集合之中的一段连续的数据,当一个Chunk达到一定大小的时候,就会开始分裂。当一个

shard超过一定量的数据时,chunk会被迁移到其他shard之中,新增shard也会影响chunk的移动,好比你把日志

写入到你的本地文件,规定是60M的一个文件,一旦超过大小,就有新的文件,一旦文件在机器上存放不了了,

那就将这台机器上的文件转移到其他的机器上去~        

  MongoDB的shard,四环一种将海量的数据水平扩展的数据库集群系统,数据库分表存放在Sharding的

各个节点之上。

相对于关系数据库而言,Chunk就是数据库中的一行记录,Collection就是对于与关系数据库中的表。

Shard Server

即存储实际数据的分片,每个Shard可以是一个mongod实例,也可以是一组mongod实例构成的Replica Set。为了实现每个Shard内部的auto-failover,MongoDB官方建议每个Shard为一组Replica Set。关于如何安装及搭建replica set请参考我的另一篇文章 http://gong1208.iteye.com/blog/1558355

Config Server

为了将一个特定的collection存储在多个shard中,需要为该collection指定一个shard key,例如{age: 1} ,shard key可以决定该条记录属于哪个chunk。Config Servers就是用来存储:所有shard节点的配置信息、每个chunk的shard key范围、chunk在各shard的分布情况、该集群中所有DB和collection的sharding配置信息。

说的更加明白一点,Config Server 保存集群的元数据。

Route Process

这是一个前端路由,客户端由此接入,然后询问Config Servers需要到哪个Shard上查询或保存记录,再连接相应的Shard进行操作,最后将结果返回给客户端。客户端只需要将原本发给mongod的查询或更新请求原封不动地发给Routing Process,而不必关心所操作的记录存储在哪个Shard上。

route process 说的更明白点就是一个选择器,不断的调度合适的客户端请求,将需求中所请求,所需要的数据,从合适的shard之中返回你所需求的数据。

下面我们在同一台物理机器上构建一个简单的 Sharding Cluster:

架构图如下:

     如何理解MongoDB中的shard分片

关于 如何理解MongoDB中的shard分片问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享题目:如何理解MongoDB中的shard分片
本文地址:http://ybzwz.com/article/geoppp.html