资源描述
#,数据库原理及应用,电子科技大学,-,张凤荔,数据库系统原理与开发,7.4,文档型数据库,MongoDB,数据库的组成,MongoDB,的集群架构,【,本节学习目标,】,一,、文档数据库的组成,面向集合且模式自由的文档型数据库。面向集合,-,数据被分组为集合,(,文档,),;数据模式自由;存储的数据是键值对的集合,键是字符串,值是任意类型,包括数组和文档。,文档是,MongoDB,中数据的基本单元,集合可以被看作没有模式的表,,MongoDB,每个实例都可容纳多个独立数据库,每个数据库都有自己的集合和权限(数据库)。,文档,(Document)-,文档组集合,:Collection-,多个集合,:,数据库,(database),。一个实例支持多个数据库,(database),1,数据库对应的文件信息,默认数据目录是,/daba/db,,存储所有的数据文件,每个数据库都包含一个,.ns,文件和一些数据文件,例如,test,数据库,数据库的文件就会由,test.ns,、,test.0,、,test.1,、,test.2,等组成。,预分配空间的机制,用,0,进行填充。每新分配一次,它的大小都会是上一个数据文件大小的,2,倍,每个数据文件最大,2G,。,数据库的每张表都对应一个命名空间,每个索引也有对应的命名空间,这些命名空间的元数据集中在*,.ns,文件中。,例子,数据库的相关文件,test,数据库包含,3,个文件用于存储表和索引数据,,test.2,预分配的空文件,,test.0,和,test.1,分到相应的盘区对应不同的名字空间。,每个命名空间可以包含多个不同的盘区,不是连续的,命名空间对应的盘区随着分配的次数不断增长的。不用释放回收空闲的磁盘空间。,mongodb,的数据将会保存在底层文件系统中,,dbpath,设定为“,/data/db”,目录,创建一个,database,为“,test”,,,collection,为“,sample”,,然后在此,collection,中插入数条,documents,。我们查看,dbpath,下生成的文件列表:,例子,数据库的相关文件,test,已经有,6,个数据文件(,data files,),每个文件以“,database”,的名字,+,序列数字组成,序列号从,0,开始,逐个递增,数据文件从,16M,开始,每次扩张一倍(,16M,、,32M,、,64M,、,128M.,),ls-lh,-rw-1 mongo mongo 16M 11 6 17:24 test.0,-rw-1 mongo mongo 32M 11 6 17:24 test.1,-rw-1 mongo mongo 64M 11 6 17:24 test.2,-rw-1 mongo mongo 128M 11 6 17:24 test.3,-rw-1 mongo mongo 256M 11 6 17:24 test.4,-rw-1 mongo mongo 512M 11 6 17:24 test.5,-rw-1 mongo mongo 512M 11 6 17:24 test.6,-rw-1 mongo mongo 16M 11 6 17:24 test.ns,数据库存储,-collection,数据库中所有的,collections,以及索引信息分散存储在多个数据文件中,数据分块的单位为,extent,(范围,区域),即一个,data file,中有多个,extents,组成,,extent,中可以保存,collection,数据或者,indexes,数据,一个,extent,只能保存同一个,collection,数据,不同的,collections,数据分布在不同的,extents,中,,indexes,数据也保存在各自的,extents,中;,在每个,database,的,namespace,文件中,每个,collection,只保存了第一个,extent,的位置信息,每个,extent,都维护者一个链表关系。,2 Namespace,文件,对于,namespace,文件,比如“,test.ns”,文件,默认大小为,16M,,此文件中主要用于保存“,collection”,、,index,的命名信息,,可保存,collection,的“属性”信息、每个索引的属性类型等,通过配置文件“,nsSize”,选项来指定存储大量的,collection,(比如每一小时生成一个,collection,,在数据分析应用中)。,3 Journal,文件,journal,日志为,mongodb,提供了数据保障能力,用于当,mongodb,异常,crash,后,重启时进行数据恢复;,mongodb,的数据持久写入磁盘是滞后的。,默认情况下,“,journal”,特性是开启的,一个,mongodb,实例中所有的,databases,共享,journal,文件。,二、,mongoDB,的体系结构,集群,分布式集群:数据备份,-,安全性,高读写服务的能力和数据存储能力。,通过副本集,(replica),对数据进行备份,通过分片,(sharding),对大的数据进行分割,分布式存储在不同节点上。,mongodb,目前为止支持三种集群模式:主从集群,副本集集群,分片集群。,1.,集群架构,单机实例,(mongod instance),:只有一个单机实例,客户端与其直接连接使用。,副本集,(Replica sets),:副本集通常由至少,3,个节点组成。一个主节点,处理客户端请求,其余是从节点,复制主节点上的数据。,mongodb,各个节点常见的搭配方式为:一主多从(正常情况下至少,3,个节点组成副本集),主节点记录在其上的所有操作,从节点定期轮询主节点获取这些操作,数据与一致。,选举机制:当一个节点挂掉之后需要满足“大多数”成员投票,2,.,副本集,图示 副本集,(Replica sets),3.,分片,Sharing,分片,(Sharding),:分片是将一个集合的数据分别存储在不同的,shard,节点上减轻单机压力。根据,Shard Keys,来划分数据,,数据库提供了两种方法:垂直扩展和分片。垂直扩展:增加,CPU,、,RAM,,存储资源等。分片(水平扩展):划分数据集,数据分布到多台服务器中,每个碎片(,chard,)是独立的数据库,分片集群有三个组件:,Shards,碎片,存储数据,每个碎片都是一个复制集。,query routers,:查询路由或,mongos,实例。,configservers,:配置服务器,存储集群中的元数据。,3.,分片,Sharing,图示:分片集群有三个组件:,Shards,碎片,存储数据,每个碎片都是一个复制集。,query routers,:查询路由或,mongos,实例。,configservers,:配置服务器,存储集群中的元数据。,4.,集群中的服务器,路由服务器,(mongos),:路由服务器负责把对应的数据请求请求转发到对应的,shard,服务器上,mongos,,数据库集群请求的入口。,配置服务器,(mongos),:存储所有数据库元信息(路由、分片)的配置。,mongos,本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。,配置服务器相当与集群大脑,存储所有数据库元信息(路由、分片)的配置。,5.,集群说明,集群的组成:单机,mongod,组成副本集,-,分片,客户端通过,mongos,读取,config servers,的信息与分片通信,通过,mongos,服务器的,ip,和连接方式,,mongos,会自动选择。,Shards,:每一个,shard,包括一个或多个服务和存储数据的,mongod,进程这些服务,/mongod,进程在,shard,中组成一个复制集。,本节学习结束!,
展开阅读全文