浅谈NoSQL

2022-04-13 00:00:00 数据 数据库 模型 结点 结构

 NoSQL是什么?有哪些种类?以及各自的特点又是什么?请看下文.........

NoSQL是以互联网大数据应用为背景发展起来的分布式数据管理系统。NoSQL有两种解释:一是Non-Relational,即非关系数据库;另一种是Not Only SQL,即数据库管理技术不仅仅是SQL,目前第二种解释更为流行。

NoSQL系统支持的数据模型通常分为4种模型分别为:Key-Value模型,BigTable模型,文档(Document)模型以及图(Graph)模型。




(1)Key-Value模型,记为KVKeyValue,是非常简单而容易使用的数据模型。每个Key对应一个ValueValue可以是任意类型的数据值。它支持按照Key值来存储和提取Value值。Value值是无结构的二进制码或纯字符串,通常需要在应用层去解析相应的结构,典型数据库有:RedisOracle BDB


(2)BigTable模型,又称Columns Oriented模型,能够支持结构化的数据,包括列,列簇,时间戳和版本控制等元数据的存储。该数据模型的特点是列簇式,即按列存储,每一行数据的各项被存储在不同的列中,这些列的集合称作列簇。每一列的每一个数据项都包含一个时间戳属性,以便保存同一个数据的多个版本,该类型数据库有HBaseRiak


(3)文档模型(Document,该模型在存储方面有以下改进:Value值支持复杂的结构定义,通常是被转换成JSON或者类似于JSONBSON结构化文档;支持数据库索引的定义,其索引主要是按照字段名称来组织的。如:CouchDBMongoDB,国内的开源文档数据库是SequoiaDB


(4)图模型(Graph),表示为GVE),V为结点(node)的集合,每个结点具有若干属性,E为边(edge)集合,也可以具有若干属性。该模型支持图结构的各种基本算法。可以直观的表达和展示数据之间的联系。如:Neo4JInfoGridInfinite 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)

相关文章