NoSQL是什么?有哪些种类?以及各自的特点又是什么?请看下文.........
NoSQL是以互联网大数据应用为背景发展起来的分布式数据管理系统。NoSQL有两种解释:一是Non-Relational,即非关系数据库;另一种是Not Only SQL,即数据库管理技术不仅仅是SQL,目前第二种解释更为流行。
NoSQL系统支持的数据模型通常分为4种模型分别为:Key-Value模型,BigTable模型,文档(Document)模型以及图(Graph)模型。
(1)Key-Value模型,记为KV(Key,Value),是非常简单而容易使用的数据模型。每个Key对应一个Value。Value可以是任意类型的数据值。它支持按照Key值来存储和提取Value值。Value值是无结构的二进制码或纯字符串,通常需要在应用层去解析相应的结构,典型数据库有:Redis,Oracle BDB。
(2)BigTable模型,又称Columns Oriented模型,能够支持结构化的数据,包括列,列簇,时间戳和版本控制等元数据的存储。该数据模型的特点是列簇式,即按列存储,每一行数据的各项被存储在不同的列中,这些列的集合称作列簇。每一列的每一个数据项都包含一个时间戳属性,以便保存同一个数据的多个版本,该类型数据库有HBase,Riak。
(3)文档模型(Document),该模型在存储方面有以下改进:Value值支持复杂的结构定义,通常是被转换成JSON或者类似于JSON的BSON结构化文档;支持数据库索引的定义,其索引主要是按照字段名称来组织的。如:CouchDB,MongoDB,国内的开源文档数据库是SequoiaDB。
(4)图模型(Graph),表示为G(V,E),V为结点(node)的集合,每个结点具有若干属性,E为边(edge)集合,也可以具有若干属性。该模型支持图结构的各种基本算法。可以直观的表达和展示数据之间的联系。如:Neo4J,InfoGrid,Infinite Graph。
NoSQL数据库在以下的这几种情况下比较适用:
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。
下表是四种数据库的对比
NoSQL系统为了提高存储能力和并发读写能力采用了及其简单的数据模型,支持简单的查询操作,而将复杂的操作留给应用层实现,并对数据进行划分和备份,以应对宕机和结点的失败,提高系统高可用性;通过大量结点的并行处理,合理利用资源从而获得高性能的数据库系统,并且采用的是横向扩展的方式(scale out)