一、概述
NoSQL(
Not Only SQL
),中文意思是 不仅仅是SQL, 泛指非关系型的数据库。NoSQL这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。那么为什么是NoSQL呢?传统的关系型数据库例如MySQL不是非常好用吗?换句话说 NoSQL出现的意义是什么?随着互联网网站的兴起,传统的关系型数据库在应对动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如 商城网站中对商品数据频繁查询、对热搜商品的排行统计、订单超时问题、以及微信朋友圈(音频,视频) 存储等相关使用传统的关系型数据库实现就显得非常复杂,虽然能实现相应功能,但是在性能上的表现却不是那么乐观。而NoSQL这个技术门类的出现,很好的解决了这些问题,它告诉了世界数据库不仅仅是sql,还有NoSQL!
二、四大分类
键值型数据库、列存储数据库、文档型数据库、图形数据库。
2.1、键值型数据库(K-V)
2.1.1、概述
这一类数据库主要会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,类似于Java中的Map。
2.1.2、特点
- K-V模型对于IT系统来说的优势在于简单、易部署;
- 但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了;
2.1.3、相关产品
Tokyo Cabinet/Tyrant、
Redis:Key Value 内存 快
SSDB:Key Value 硬盘 慢
Voldemort、Oracle BDB
2.2、列存储数据库
2.2.1、概述
列存储数据库通常用来应对分布式存储的海量数据。
2.2.2、特点
键仍然存在,但是它们的特点是指向了多个列,这些列是由列家族来统一管理的。
2.2.3、相关产品
Cassandra、HBase、Riak。
2.3、文档型数据库(Document)
2.3.1、概述
文档型数据库的灵感来自于Lotus Notes办公软件,而且它同第一种键值存储相类似,该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
2.3.2、特点
以文档形式存储。
2.3.3、相关产品
MongoDB、CouchDB、 MongoDb(4.x). 国内也有文档型数据库SequoiaDB,已经开源。
2.4、图形数据库(Graph)
2.4.1、概述
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要指定数据模型。许多NoSQL数据库都有REST形式的数据接口或者查询API。
2.4.2、相关产品
Neo4J、InfoGrid、 Infinite Graph。