扫描下方二维码,关注公众号,及时了解相关技术

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,比较容易映射复杂值的环境。
下表是四种数据库的对比
分类 | 常见类型 | 典型应用场景 | 数据模型 | 优点 | 缺点 |
KV | Redis,Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 | HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
文档型数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法。 |
图形数据库 | Neo4J, Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 |
NoSQL系统为了提高存储能力和并发读写能力采用了及其简单的数据模型,支持简单的查询操作,而将复杂的操作留给应用层实现,并对数据进行划分和备份,以应对宕机和结点的失败,提高系统高可用性;通过大量结点的并行处理,合理利用资源从而获得高性能的数据库系统,并且采用的是横向扩展的方式(scale out)




