数据管理大盘点 | NoSQL和NewSQL

Posted 中兴大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据管理大盘点 | NoSQL和NewSQL相关的知识,希望对你有一定的参考价值。

NoSQL


NoSQL一词首先是Carlo Strozzi1998年提出来的,指的是他开发的一个没有SQL功能的、轻量级的、开源的关系型数据库。这个定义跟我们现在对NoSQL的定义有很大的区别,它确确实实字如其名,指的就是没有SQL”的数据库。不过,NoSQL的发展慢慢偏离了初衷,Carlo Strozzi也发觉,其实我们要的不是"no SQL",而应该是"no relational",也就是我们现在常说的非关系型数据库了。


2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中再次提出了NoSQL一词,用于指代那些非关系型的、分布式的,且一般不保证遵循ACID原则的数据储存系统的出现和兴起。Eric Evans使用NoSQL这个词,并不是因为字面上的“没有SQL”的意思,他只是觉得很多经典的关系型数据库名字都叫"**SQL"(例如mysql,MSSQL,PostgreSQL),所以为了表示跟这些关系型数据库在定位上的截然不同,就用了"NoSQL"一词。


NoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据库革命性运动。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库应用,这一概念无疑是一种全新的思维的注入。


对于NoSQL并没有一个明确的范围和定义,但是它们都普遍存在下面一些共同特征:


  1. 不需要预定义模式:不需要事先定义数据模式和表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。

  2. 无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构,NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。

  3. 弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。

  4. 分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。

  5. 异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起延迟。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。

  6. BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。


NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。


在NoSQL潮流中,最重要的莫过于Apache基金会的HBase。它是第一位领导者,是一个典型的分布式文件系统,是一个开源系统。用户可以在不了解分布式底层细节的情况下,借助Hadoop开发分布式程序,它取得了成功,成为分布式数据处理界的巨擘。


第二位领导者,MongoDB,是一个成功的文档处理型数据库系统,被称为“非关系式数据库中最像关系式数据库的产品”。MongoDB查询功能强大,特别适合高性能的WEB数据处理。


Cassandra是这个领域中的一个另类产品,它兼有键值数据库和列值数据库两者的长处,它的查询功能很优秀。


最初,NoSQL破坏并引以为荣的特点是它不满足ACID(原子性、一致性、隔离性和持久性),这是它的优点,也是其问题所在。


NewSQL


NewSQL代指对传统数据库厂商做出挑战的一类新型数据库系统,是对各种新的可扩展/高性能数据库的简称,同时也指这样一类新式的关系型数据库管理系统,针对OLTP(读-写)工作负载,追求提供和NoSQL系统相同的扩展性能。这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACIDSQL等特性(scalable and ACID and(relational and/or sql-access))。NewSQL厂商的共同之处在于研发新的关系数据库产品和服务,通过这些产品和服务,把关系模型的优势发挥到分布式体系结构中,或者提高关系数据库的性能到一个不必进行横向扩展的程度。


技术的繁荣,新的产品如雨后春笋般层出不穷。如Clustrix、ScaleArc(ScaleBase)、GenieDB、Schooner、VoltDB、RethinkDB、ScaleDB、CodeFutures、Translattice和NUODB(NimbusDB)等,以及Drizzle为例,这类技术都是基于MySQL或PostgreSQL之上重新进行架构设计,而每一款产品又有其自身满足特定场景的特点,至少在某些方面是这样,如满足云数据库的要求,这些特点能引发使用者兴趣,进而有替代其它产品的可能。


毫无疑问,NewSQL产品的出现,从某种程度上来讲,对传统数据库供应商造成了一定的影响,因为问题领域的技术瓶颈对于传统数据库供应商来说,原本就不能完全解决。NewSQL因运而生,带着改变而来,支持关系数据模型,使用SQL作为主要的接口,在基本特性的基础上,着力于如下技术方向的努力:


在架构设计方面,有两类设计模式,一类数据库系统工作在一个分布式集群的节点上,其中每个节点拥有一个数据子集,SQL查询被分成查询片段发送给自己所在的数据节点上执行,数据库可以通过添加额外的节点来线性扩展。另一类数据库系统通常有一个单一的主节点的数据源。它们有一组节点用来做事务处理,这些节点收到特定的SQL查询后,会把它所需的所有数据从主节点上取回来后执行SQL查询,再返回结果。


高度优化的SQL存储引擎也是技术努力方向之一。这类系统提供了MySQL相同的编程接口,但扩展性比内置的引擎InnoDB更好。


NewSQL不断的向人们传递着这样的理念:没有最好,只有更好,总有一款适合你。NewSQL的光环是如此耀眼,但一定不能忽视MySQL和PostgreSQL在基础工作上的完美成就。



以上是关于数据管理大盘点 | NoSQL和NewSQL的主要内容,如果未能解决你的问题,请参考以下文章

NOSQL or NEWSQL

大数据时代的SQLNoSQL和NewSQL

HBase进化 | 从NoSQL到NewSQL,凤凰涅槃成就Phoenix

NoSQL先驱RethinkDB倒掉后,借此来看开源新型数据库NewSQL的未来

SQL,NoSQL和NewSQL的区别

大数据技术原理与应用:第五讲NoSQL数据库