Py学习  »  NoSql

传统关系型数据库、NoSQL、NewSQL,三者如何在云时代共处? | 技术前沿

百度智能云 • 4 年前 • 772 次点击  
温馨提示:本文3700字,估计阅读时间12分钟。

数据已经是当下及未来最重要的生产资料,而伴随数据价值的不断提升,以及数据的爆炸式增长,数据库作为数据存储的重要载体,正在迎来变化。传统的关系型数据库越来越积极地拥抱未来,新型云原生的数据库架构备受关注。
 
那么,关系型数据库的未来走向如何?新型数据库架构又有哪些?谁才是未来?不要着急下一个结论,本文在深入探讨每一种数据库优劣势的基础上,结合未来,做一个全面的梳理。
 
关系型数据库老矣?

关系型数据库从出现至今,几十年时间里一直是数据库领域的佼佼者。


根据全球较为权威的DB-Engines公布的数据库统计排名,截至2018年6月,排名前6位的数据库,仅有排名第5的MongoDB是文档型数据库,其余全部是关系型数据库,且前3位所占有的比重远领先于其它数据库。
 
关系型数据库在经过大数据、NoSQL及NewSQL等新兴技术的轮番轰炸后依然坚挺,这与其固有的优势密不可分。总结起来,主要体现在对开发、运维、系统这三个方面上的重大影响上。
 
1、开发优势

对于开发人员来说,关系型数据库的首要优势是面向SQL。

SQL是关系型数据库的结构化查询语言,虽然不同的关系型数据库有不同的SQL方言,但基于ANSI标准的SQL是大部分数据库支持的。SQL是面向数据库的访问语言,可以非常方便地对数据库进行增、删、改、查以及授权和管理。而且SQL的查询灵活度非常高,可以十分便捷地在联机事务处理(OLTP)与联机分析处理(OLAP)之间转换。
 
另外,SQL是应用开发工程师必须掌握的一门编程语言,流行度非常高,对于任何公司而言,招聘到一个完全不会写SQL的应用开发工程师的概率非常小。因此,SQL极大地降低了招聘开发人员的成本。
 
除了SQL语言本身,各种开发语言对关系型数据库的支持也十分完善。

以Java为例,JDBC是Java语言访问数据库的标准接口,各个关系型数据库厂商均提供了实现JDBC接口的驱动程序。使用Java语言进行开发的工程师无需感知不同关系型数据库间的差异,只要根据JDBC接口编程即可。
 
2、运维优势

关系型数据库由于存在时间长久,因此针对每一种常见的关系型数据库,都能比较容易地招聘到相应的数据库管理员(DBA),以保证数据库的稳定性、完整性、安全性、并通过监控和分析关系型数据库的系统瓶颈提升设计的合理性。
 
成熟的关系型数据库拥有完善的生态圈,可以保证用于实现数据备份、性能监测分析等功能的配套工具能够正常使用。规模较大的企业以及重要业务系统一般都需要专门的DBA进行运维工作。
 
3、系统优势

只有时间才是检验技术是否成熟与稳定的标准。

关系型数据库经历了几十年的考验,能够应对超大规模的使用需求,其存储引擎也十分成熟。基于MVCC的数据库引擎在性能和正确性上能做到很好的平衡,并且能通过B+Tree索引大幅提升查询的效率。面对数据库这样的关键组件,谨慎选用是架构师们需要十分注意的。
 
基于ACID的事务是关系型数据库带给应用系统的又一次强力保障。


ACID
ACID是数据库事务能够正确执行的四个基本要素的首字母,分别指代:

原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)


只有支持事务的数据库才能最大限度地保证数据的正确性和完整性。
 
不过,尽管关系型数据库的性能和访问承载能力在面向单一数据节点的企业级应用时代是无可挑剔的。但在访问量和数据量急剧增长的今天,关系型数据库已经很难再像以前那样作为大规模系统的底层支撑了,甚至成为了应用系统的瓶颈。
 
关系型数据库的不足主要体现在:单节点并发访问量受限、单节点数据承载量受限、分布式事务性能衰退严重。原因归根结底是设计初衷有一定的问题。它并非分布式的产物,对分布式系统天生不友好,因此它很难适应互联网的架构模型。面对可以随时弹性扩容的无状态服务,使用关系型数据库已经略显笨重。
 
另辟蹊径的NoSQL数据库


随着关系型数据库的不足之处越来越明显地被暴露出来,NoSQL数据库出现了。

NoSQL数据库的目的并不是取代SQL数据库,而是实现“Not Only SQL”,提供SQL之外的另一种选择。NoSQL 通常不保证ACID,同时采用分布式架构,具有很强的扩展性,这种特点使得NoSQL数据库适应于许多需要支持大规模、高并发、海量数据存储分析的新时代业务。

NoSQL数据库有很多种分类,大致包括键值数据库、文档数据库、列族数据库以及图数据库等,可以应对各式各样的场景。

键值数据库的代表是Redis。Redis在很多场景下都作为缓存使用,但它也同样提供了落盘功能。在面对通过主键进行查询的场景,Redis的效率非常高。
 
文档数据库的代表是MongoDB。文档模型与面向对象的数据表达方式更加接近,它拥有自由度极高的Schema模型,可以方便地与JSON数据进行映射。
 
列族数据库的代表是Hadoop大数据体系中的HBase,它是专门用于处理海量数据的分布式数据库。
 
图数据库是用于处理图关系的数据库,一般用于特殊场景。
 
NoSQL数据库种类繁多,应用场景天差地别。不过有一个共性,那就是大多对分布式数据库所需的分片和数据迁移功能支持得非常好,在海量数据和高并发支持方面,性能强于传统的关系型数据库。对于这样的场景,NoSQL数据库会是非常合适的选择。
 
不过,NoSQL数据库也存在一些不足。比如,不同的NoSQL数据库都有自己的查询语言,相比于SQL,制定应用程序标准接口会更加困难,并且大多数NoSQL数据库不提供ACID事务操作,因此如果企业的核心业务对数据一致性要求严格,在选择NoSQL数据库时需要慎重。正如NoSQL数据库的定义所说,它们是基于SQL的关系型数据库的有益补充,两者是相辅相成,而非相互替代关系。
 
NewSQL冉冉升起

由于SQL和ACID事务实在太深入人心,而对分布式数据库的需求又前所未有的旺盛,因此另一种数据库NewSQL就应运而生了。

NewSQL是各种具有分布式可扩展功能的数据库的简称,NewSQL继承了NoSQL对海量数据的处理能力,同时还保持了传统关系型数据库对SQL和ACID事务的支持。NewSQL的关注重点在于混合式(Hybird)数据库,更倾向于找寻不再区分OLTP和OLAP查询的多模式数据库构建方案。
 
2016年,Andrew Pavlo与Matthew Aslett发表了论文《What’s Really New with NewSQL?》其中将NewSQL划分为三个大类,分别是:

新架构(NewArchitecture)
透明化分片中间件(Transparent Sharding Middleware)
云数据库(Database-as-a-Service)

下面详细讲讲这三大类:

1.新架构立足分布式

新架构NewSQL是全新的面向分布式架构而设计的数据库系统。
 
该系统一般使用share-nothing架构,具有多节点并发控制、高度容错的自动化数据副本复制、流量控制及分布式查询处理等特征。由于它们是天生面向分布式多节点而设计的系统,因此处理查询优化和节点间通信协议的能力更加出色。举例来说,NewSQL数据库的多数据节点间可以直接通信,无需依赖中心节点。
 
不过由于采用了全新的架构设计方式和存储引擎,并未经过实践验证,因此企业的技术选型者们格外谨慎。同时,具有运维新一代NewSQL经验的工程师也凤毛麟角,相比于关系型数据库,NewSQL当前的使用者数量非常少。很多企业都会尝试跟进新架构NewSQL,但尚未迁移至核心系统。


2.透明化分片中间件兼容性强


透明化分片中间件允许应用将数据分片写入多数据节点,但数据节点仍然采用面向单数据节点的关系型数据库。透明化分片中间件使用中心组件来路由数据操作请求、协调事务、管理数据分布以及复制数据副本。整个集群对外是一个逻辑实例,应用往往无需改动即可平滑使用。

透明化分片中间件的核心优势是兼容性强,它可以低成本地在系统现有的单机关系型数据库与分片中间件之间切换,而无须开发者进行任何代码上的改动。


透明化分片中间件NewSQL能够充分合理地在分布式场景下利用传统关系型数据库的计算和存储能力,而非实现一个全新的关系型数据库。

因此,其既可以利用传统关系型数据库的稳定性和兼容性,又可以在其基础之上增加分布式场景的处理方法。“在原有基础上增加,而非颠覆”是这类NewSQL产品的核心功能。
 
由于基于单数据节点的传统关系型数据库是面向磁盘设计的,对于基于内存的存储管理以及并发控制不如重新设计的面向分布式的新架构NewSQL高效。另外,SQL解析、查询优化等工作在中间件和数据库中将会重复进行,也会使整体运行效率略逊于新架构NewSQL。
 
在国内的大中型互联网企业中,这类NewSQL十分流行,每个公司基本都有自己的数据库中间件。但由于和公司内部的业务系统耦合较重,因此成熟的开源产品较少。目前进入Apache基金会孵化器的Apache ShardingSphere是这类产品的代表。

3.云数据库无需考虑细节


最后一种类型的NewSQL是由云计算公司所提供的云数据库产品。

云数据库的使用方无须自行维护数据库及其硬件,而可以将全部数据托管至云平台所提供的服务。使用方通过数据库的URL连接至云端数据库,并通过API或操作仪表盘去操作和监控系统。
 
云数据库使用成本最低,工程师无须考虑数据库的任何细节问题,对中小企业来说是理想的解决方案,不过对于巨大数据体量的公司来说,采用前两种NewSQL的开源或自研方案更加合适。
 
NewSQL虽然尚未成熟,但确实是面向未来的正确尝试。三种NewSQL的关注点各不相同:

新架构数据库的关注点是彻底革新;
透明化分片中间件数据库的关注点是增量;
云数据库的关注点是屏蔽用户使用细节。

虽然不同类型的数据库各有千秋,但它们的核心功能是类似的。
 
而无论对于哪一种NewSQL而言,混合式(Hybird)数据库都将是其未来的发展方向,当不再区分OLTP和OLAP时,开发成本将会极大地降低。
 
百度智能云作为业内佼佼者,能够提供从关系型数据库、NoSQL数据库,到NewSQL,以及数据库管理服务等一整套数据库产品及相关服务,几乎涵盖各个领域,能够帮助用户从容应对已经到来的数据智能时代。
 
总结全文,尺有所短寸有所长,在数据爆发式增长的今天,并不是谁取代谁的关系,而是要学会综合运用各种技术,对症下药,让最合适的技术应用在最匹配的场景中,这样才能在新时代游刃有余。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50895
 
772 次点击