一、第一模块
课程名称:玩转MongoDB4.0(最新版) 从入门到实践
章节名称:第9章 MongoDB之数据分片【适用升职加薪】 9-1至9-3
讲师名称:Stannum
二、第二模块 课程内容
1.纵向扩展
增强单一服务器的性能
简单的架构和运维模型
单一服务器的性能上线(硬件资源本身的限制以及成本的限制)
2.横向扩展
增加提供服务的服务器的数量。
更高的可扩展性。
增加架构和运维的复杂度。(提高生产环境中的运维的复杂度)
数据库分片
把整个数据库中的数据分成一个个的子集,把每一个子集我们把它存储在一个分片上,所有的分片合在一起组成一个分片集群,所有的数据库中的数据加在一起才是完整的数据。
而每一个数据库分片是可以跑在一个独立的服务器之上的。因为有了数据库分片这个概念,也就是说,我们完全可以把原来存储在一台服务器的所有内容分布式的存储在多台服务器上。然后用多台服务器构成我们数据库完整的服务。这个就是mongodb所说的提高系统可扩展性的方案。
分片集
分片
配置服务器:保存元数据(每个分片上的数据是哪些,至少要有一个每个分片上数据保存的范围,整个集群当中有多少个不同的分片,类似这些在分片层面更上一层更高一层这种信息称之为元数据)
mongos(路由, 应用服务器)(既然每个分片上只存储了数据库的一个子集,当用户发送请求,需要读取任何一篇文档或数据,用户不知道文档存在哪一篇分片中,此时,我们会要求客户把请求发送给mongos,mongos会向配置服务器询问每个分片中的元数据, 当其清楚元数据信息之后,mongos就可以把请求准确的发送在相关的分片上面,再把从分片上的获取的数据通过处理返回给用户)
注:分片之间的数据不是一成不变的,数据可以从一个分片迁移到另外一个分片
每一个分片存储一部分数据,可以部署为复制集。
mongos路由可以将客户请求发送至相关的分片。
配置服务器保存集群配置和元数据,可以部署为复制集。
分片集群的结构:
主分片: 保存数据库中所有的不适用分片的集合的。这是一个非常灵活的处理方法。
集群中的每一个数据库都会选择一个分片作为主分片。(也就是说,如果我们有多个数据库,那可能每个数据库都会选择一个分片作为其主分片)
主分片负责存储所有不需要分片的集合。
创建数据库的时候,数据最少的分片被选为主分片。(也就是说,在集群中每一个分片,它既可能是某一个数据库,如数据库A的主分片,同时也可能是数据库B的一个普通分片,数据库的主分片取决于我们创建数据库的当时分片上已有数据库数据的数量,每个数据库的主分片也是可以进行认为调整的,但成本很高,在主分片完成迁移之前,整个数据库很有可能无法正常提供服务