NOSQL or NEWSQL

Posted SQLBABY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOSQL or NEWSQL相关的知识,希望对你有一定的参考价值。

NOSQL or NEWSQL


近几年随着大数据生态圈的不断发展,NOSQL也随之声名鹊噪,甚至有超越传统关系型数据库的风头。不光说的人多了,用到的地方也逐渐增多,尤其做作为大数据生态圈中的一员,被用到越来越多的地方。今天就跟大家捋一捋NOSQL产生的背景以及发展历史,顺便看看这个SQL到底是NOSQL还是NEWSQL?



一:NOSQL产生的历史背景

许多人可能认为NOSQL不过是传统关系型数据库的一个分类,其实不然。NOSQL起步并不晚于传统关系型数据库。几乎在E.F. Codd提出关系型理论的同时NOSQL也出现了,只不过当时还没有NOSQL这个说法。在1966年的时候,首次出现的NOSQL数据库代表是MUMPS ,这是一个键值对(key-value)性数据库,并且支持ACID特性。另外一个NOSQL的代表是Ken Thompson's dbm,同样也是键值对数据库。不过NOSQL概念却是由carlo strozzi于1988年第一次提出的。

NOSQL是怎么一步步发展到现在呢?这不得不说在互联网世界里,需求永远是最大的原动力。随着互联网基础设施的发展以及制造业水平的不断提升,现在几乎人手一部手机,而一部手机上的应用(APP)也至少是两位数量级的。在加上物联网,世界每天产生的数据至少已经达到PB级了。这么大量级的数据,加上这些数据的结构和schema信息不固定,这些无疑给传统的关系型数据库带来了巨大的挑战。这些挑战包括:存储空间上的巨大压力,非结构化数据如何存储,如何应对数据类型经常变化,在较大数据量下维护ACID特性的成本,查询效率等等。在这样的挑战下NOSQL就应运而生了,NOSQL不关心数据的结构,针对大量级的数据容易做水平扩展等等。



二:NOSQL家族成员

首先需要说明的是就像关系型数据库是一类数据库的统称一样,NOSQL也并非单指某一个数据库,而是一类数据库的统称。具体包括以下几类的非关系型数据库。

  • Key-value型,也叫键值对性的数据库,主要成员有Redis,Cassandra, Azure, LevelDB, Riak。这类NOSQL数据库的特性是,数据存储在内存中,采用无模式的方式存储数据,与我们日常使用的json格式的数据比较类似,查询返回速度比较快。

  • Column Store 型,即列式存储性,也加宽列存储。主要成员有HBase, BigTable, HyperTable,ScyllaDB。所谓的列式存储是与传统的关系型数据库按行存储而言的。列式存储的一大优势的是对列里面的数据内容没有限制,很好的支持列的扩容以及数据内容变更,尤其是非结构化数据和半结构数据的支持。

  • Document Database,文档型数据库,主要包括MongoDB和CouchDB。这种类型的数据库中的每个文档都有自己的数据和用于检索它的唯一键。对于存储、检索和管理面向文档的但仍有部分结构化的数据会是一个很好的选择。

  • Graph Database,图数据库,主要包括Polyglot和Neo4J。这种类型的数据库主要是针对复杂数据类型的存储,就像图一样各个图之间的关系是错综复杂的,很难用传统的关系型数据库来表达。

  • 其他一些还包括,Time-series时序数据库,Text search文本搜索性,Elasticsearch。还有部分同时支持多种类型,如Cassandra 和 ScyllaDB



三:NOSQL与RDBMS的对比

我们知道关系型数据库的核心是关系型数据理论,而这个理论的关键是关系代数和强一致性。所谓的强一致性就是数据库事务的ACID特性,用来确保数据的可靠和一致。这也是关系型数据库经常被用在银行、政府、电信行业的原因。相比而言,NOSQL是不遵守ACID特性的,它所遵循的是CAP理论,(C:一致性,A:可用性,P:分区容错性),三者只能得起二

具体来看,二者在以下几个方面存在差异。


这里再重点说一下二者的使用场景。RDBMS适合数据结构稳定,规则清晰,SCHEMA基本不怎么改变的,对数据查询效率有一定的要求,强依赖数据一致性的业务。一般是前端应用,银行业务等。而NOSQL的主要应用是大数据体系下,对数据格式要求不高,而且数据格式、内容经常发生变化的非结构化和半结构化的较大量级的数据。



四:NOSQL or NEWSQL

有人把NOSQL说成是’NOT SQL‘,我猜想应该是说它不支持标准的SQL语法吧,还有人把NOSQL说成是’NOT ONLY SQL‘,不仅仅是一种SQL,更多的是一个解决大数量下的存储问题的数据存储系统。不过我觉得叫成NEWSQL也未尝不可,首先这是相对于大家熟悉的旧的关系型数据库而言的,再则各类NOSQL都也一直在向着支持标准SQL语法的方向上前进,毕竟大家熟悉还是传统的SQL,而只有得到了用户,产品才有市场。而且传统的数据库也在不断的向着NOSQL的方向上努力,如支持json类型的数据,尝试水平方向上扩展等。从这个意义上来说,也许NOSQL正是解决当今数据爆炸的一种新型SQL


诚然不论是名称是NOSQL还是NEWSQL,这仅仅是一个名字,真正使用者是不会在乎的,他们更关心的是你能解决什么问题,节省多少成本,带来多少收益。所以你的价值不在你的名字而在你的能力。





以上是关于NOSQL or NEWSQL的主要内容,如果未能解决你的问题,请参考以下文章

Sql Or NoSql,看完这一篇你就都懂了

SQL or NoSQL?从存储的架构演进看数据库选型

SQL or NoSQL? 从存储的架构演进看数据库选型

[AWS][Nosql]DynamoDB动手实验101

从应用角度谈谈NoSQL 数据库和关系型数据库的区别之处

System Design Interviews: NoSQL Databases and When to Use Them.