NoSQL 名词解释及为什么要使用 NoSQL 数据库
NoSQL 泛指非关系型数据库。随着互联网 web 2.0 网站的兴起,传统的关系数据库在应付 web 2.0 网站,特别是超大规模和高并发的 SNS 类型的 web 2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。虽然 NoSQL 流行语火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动。尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着一个严酷的事实:技术越来越成熟 —— 以至于原来很好的 NoSQL 数据存储不得不进行重写,也有少数人认为这就是所谓的 2.0 版本。
NoSQL (NoSQL = Not Only SQL ),意即 “不仅仅是 SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至 2009 年趋势越发高涨。NoSQL 的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新思维注入。
NoSQL 数据库的四大分类:
1、键值 (Key-Value) 存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value 模型对于 IT 系统来说的优势在于简单、易部署。但是如果 DBA 只对部分值进行查询或更新的时候,Key/value 就显得效率低下了。譬如:Tokyo Cabinet/Tyrant、Redis、Voldemort、Oracle BDB。
2、列存储数据库
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。譬如:Cassandra、HBase、Riak。
3、文档型数据库
文档型数据库的灵感是来自于 Lotus Notes 办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,譬如:JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。譬如:CouchDB、MongoDb。
4、图形 (Graph) 数据库
图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL 数据库没有标准的查询语言 (SQL),因此进行数据库查询需要制定数据模型。许多 NoSQL 数据库都有 REST 式的数据接口或者查询 API。譬如:Neo4J、InfoGrid、Infinite Graph。
因此,NoSQL 数据库在以下的这几种情况下比较适用:
1、数据模型比较简单;
2、需要灵活性更强的 IT 系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定 key,比较容易映射复杂值的环境。
版权声明:
本文由 德云社区 整理,原文来自网络。
|