1、数据库原理及应用,电子科技大学,-,张凤荔,数据库系统原理与开发,7.1 NoSQL,数据库概述,NoSQL,的基本概念,NoSQL,数据库的存储模型,NoSQL,数据库的特征,【,本节学习目标,】,一、,NoSQL,的基本概念,1,什么是,NoSQL,NoSQL,是,Not Only SQL,的缩写,意即,“,不仅仅是,SQL”,,即对关系型,SQL,数据库系统的补充。,一类非关系数据存储系统,通常不需要一个固定的表的模式,所有的,NoSQL,淡化了一个或更多的,ACID,属性,相比传统数据库叫它分布式数据库管理系统更贴切,数据存储被简化,重点被放在了分布式数据管理上,NoSQL,,互联
2、网公司像谷歌或,Facebook,每天有万亿比特的用户数据产生,一些新数据源、新的应用领域也在生成大量数据,NoSQL,并不单指一个产品或一种技术,它代表一族产品,以及一系列不同的、有时相互关联的、有关数据存储及处理的概念。,2,、,NoSQL,的技术,简单数据类型,-,键值,系统只需支持单记录级别的原子性,系统的扩展性,元数据和应用数据的分离,弱一致性步开销,用最终一致性和时间一致性来满足用户对数据一致性的要求,适应数据增长,并且能灵活适应半结构化数据和稀疏数据集。,没有声明性查询语言,没有预定义的模式,存储方式灵活包括键,-,值对存储、列存储、文档存储、图形存储数据库等,,最终一致性,非结
3、构化和不可预知的数据,遵守,CAP,定理,高性能,高可用性和可伸缩性,3,NoSQL,的特点,优点表现在,:,高可扩展性、分布式计算、低成本、架构的灵活性,半结构化数据、没有复杂的关系。,缺点,:,没有标准化、有限的查询功能(到目前为止)、最终一致不直观等,4,NoSQL,的,整体框架,接口层,REST,Thrft,Map/Reduce GET/PUT,语言特定,SQL,子集,数据逻辑模型层,Key-value Column-Family Document Graph,数据分布层,CAP,支持 支持多数据中心 动态部署,数据持久层,基于内存 基于硬盘 基于内存和硬盘 定制可插拔,图,7-1 N
4、oSQL,的整体结构,二、,NoSQL,数据库的存储模型,列存储数据库,将同一列的数据存储在一起,可以存储结构化和半结构化数据,键值存储数据库,存储的数据是有键(,key,)和值(,value,)两部分组成,通过,key,快速查询到其,value,,,value,的格式可以根据具体应用来确定,文档存储数据库,存储的内容是文档型的,可以用格式化文件(类似,json,、,XML,等)的格式存储,图存储数据库,数据以有向加权图方式进行存储,1.,键值存储的类型与特征,a.临时性的:保存在内存中,可以进行快速的保存和读取操作,数据有可能丢失,b.永久性:在磁盘上保存数据,可以进行快读的读写(没有内存中
5、快),数据不会丢失,c.两者兼具:内存和硬盘同时保存数据,可以进行快速的读写操作,硬盘上有数据不会丢失,适合处理数组类型的数据,特征:,快速查询、,快速写入、,查询复杂度基于内存管理或内存映射、,聚合不透明、,适合混合工作复杂并扩展大的数据集,2.,文档存储,a.存储方式:没有表结构,表结构可变,b.可以进行复杂的查询条件,C.“文档,”其实是一个数据记录,能够对包含的数据类型和内容进行“自我描述,”,面向文档数据库是用于存储、检索和管理面向文档和半结构化的数据,。文档包括,XML、YAML、JSON 和 BSON,还有二进制格式(诸如PDF和MS office 文档),3.,列存储数据库,面
6、向列的数据库,对大量行少数列进行读写,对所有特定的列进行通时更新。,高,拓展性(特别是写入),应用,十分困难,对,大量数据更新和查询有优势,适用在那种需要部署在大规模数据库的场合,在那种场合中所使用的数据库需要具备较高的写入性能,。,开发者可以动态的控制列族中的各列,数据值是按照行标识符,列名及时间戳来定位的,数据建模者和开发者可以控制数据的存储位置,读取操作和写入操作都是原子操作,数据行是以某种顺序进行维护的,4,.,图存储数据库,图形数据库每个对象是一个节点,之间的关系是一条边。,图形数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询。,图形数据库适合用于社交
7、网络,推荐系统等专注于构建关系图谱的系统。,特点:,可以表示复杂结构,数据库操作快(相对于数据量较大、在关系数据库中需要关联join表的操作);数据更直观。,更灵活:不管有什么新的数据需要存储,都是一律的节点和边,只需要考虑节点属性和边属性。,数据库操作的速度并不会随着数据库的增大有明显的降低。,三、,NoSQL,数据库的特征,1,不需要预定义模式,2,无共享架构,3,弹性可扩展,4,分区,5,异步复制,6 BASE:,相对于,ACID,特性,,NoSQL,数据库保证的是,BASE,特性,(BASE,是最终一致性和软事务,),NoSQL,数据库的架构特征,NoSQL,具有灵活的数据模型,NoSQL,很容易实现可伸缩性(向上扩展与水平扩展);,高可用的架构;,NoSQL,数据库都具有非常高的读写性能,社交网络、移动服务、协作编辑,NoSQL,数据库在这些方面有大展身手的机会。,NoSQL,数据库的应用场景,1、数据模型比较简单;,2、需要灵活性更强的IT系统;,3、对数据库性能要求较高;,4、不需要高度的数据一致性;,5、对于给定key,比较容易映射复杂值的环境,。,许多云环境下的新型应用,如社交网络网、移动服务、协作编辑等,。云计算时代海量数据管理系统的设计目标为可扩展性、弹性、容错性、自管理性和“强一致性”。,-NewSQL,本节学习结束!,