网站大量收购闲置独家精品文档,联系QQ:2885784924

第五讲:Mongodb分片.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲:Mongodb分片

第五讲:Mongodb分片 小组成员:董 杰 杨 森 何阿静 分片原理介绍 Mongodb分片思想? MongoDB分片的基本思想就是将集合切分成小块.这些块分散到若干片里面,每个片只负责总数据的一部分.应用程序不必知道哪片对应哪些数据,甚至不需要知道数据已经被拆分了,所以在分片之前要运行一个路由进程,进程名mongos,这个路由器知道所有数据的存放位置,所以应用可以连接它来正常发送请求.对应用来说,它仅知道连接了一个普通的mongod.路由器知道和片的对应关系,能够转发请求到正确的片上.如果请求有了回应,路由器将其收集起来回送给应用.在没有分片的时候,客户端连接mongod进程,分片时客户端会连接mongos进程.mongos对应用隐藏了分片的细节. 分片原理介绍 何时分片? a、单个机器的磁盘不够用 b、单个mongod已经不能满足些数据的性能需要 c、想将大量数据放在内存中提高性能 分片原理介绍 分片的依据是什么? 片键:设置分片时,需要从集合里面选一个键,用该键的值作为数据拆分的依据. 负载平衡问题 片键的选择决定了插入操作在片之间的分布 。例如:对学生表进行分片,如果把性别作为片键则只分为两片,数据增加后只会往多个服务器中的两个中加入分片,而其它的则空闲导致负载不平衡。如果以姓名开头字母作为片键,则负载较为均衡。 分片原理介绍 片键对操作的影响 客户端用户应该无法区分数据是否分片,但是要了解选择不同片键情况下的查询有何不同。 示例:假设还是那个表示人员的集合,按照name分片,有3个片,其名字首字母的范围是A-Z.下面以不同的方式查询 a、 db.people.find({name:Refactor}) mongos会将这个查询直接发送给Q-Z片,获得响应后,直接转发给客户端. b、db.people.find({name:{$lt:L}}) mongos会将其先发送给A-F和G-P片,然后将结果转发给客户端 c、db.people.find({email:refactor@msn.cn}) mongos并不追踪email键,所以也不知道应该将查询发给那个片.所以他就向所有片顺序发送查询 Mongodb分片配置 分片有3个组成部分: 1、片就是保存子集合数据的容器。片可以是单个mongod服务器,也可以是副本集。所以即使一个片内有多个服务器,也只能有一个主服务器。 2、Mongos是MongoDB各版本中配的路由器进程。它路由所有请求,然后结果聚合。它本身不存储数据或配置信息。 3、配置服务器 存储集群的配置信息,数据和分片的对应关系。Mongos不永久存放数据,所以需要个地方存放分片配置,它会从配置服务器获取同步数据。 Mongodb分片配置 Mongodb分片过程 客户端发送数据到mongodb数据库进行存储,首先mongos发送指令到config中,config服务器中返回片键信息,片键对应的mongod服务器,mongos把分片后的数据分别路由到不同的mongod服务器中。 Mongodb分片过程 以学生表为例讲解 片键:a、学号 b、性别 c、日期 Mongodb分片过程 Mongodb分片的不足 分片太迟 分片是把数据拆分到多台机器上,通常被用于Replica Set运行过慢时进行性能提升。MongoDB支持自动分片。然而如果你让分片进行太迟的话,问题就产生了。因为对数据的拆分和块的迁移需要时间和资源,所以如果当服务器资源基本上耗尽时很可能会导致在你最需要分片时却分不了片。 Mongodb分片的不足 不可以更改文件中的shard key 对于分片设置,shard key是MongoDB用来识别分块对应文件的凭证。当你插入一个文件后,你就不可以对文件的shard key进行更改。而这里的解决方案是把文档删除然后重新建立,这样就允许把它指定到对应的分块了。 Mongodb分片的不足 不可以对256G以上的Collection进行分片 重新回到分片太迟的问题上来 —— MongoDB不允许对增长到256G以上的Collection进行分片,之前版本的设置还没有256G。这个限定在以后肯定会被移除,而这里也没有更好的解决方案。只能进行重编译或者把大小控制在256G以下。 Thank You ! * * * * Mongos config mongod mongod client Student mongos config Mongod 2012201~2012300 Mongod 2012101~2012200 Mongod 2012001~2012100 请求存储 片键信息 *

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档