加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

关系型数据库尚能饭否?NoSQL、NewSQL谁能接棒?

发布时间:2018-10-31 20:54:32 所属栏目:移动互联 来源:张亮
导读:数据的积累是当今各行各业巨头的企业财富,数据库则是数据存储的重要途径。在大数据和微服务大行其道的今天,传统的关系型数据库也将迎来变革。云原生的数据库架构受到越来越多的关注,所以我想和大家一起来聊聊云原生数据架构。本文作为上篇,会先对当下

Redis提供了集群的能力,可以将数据分散至不同的节点,有效的分散了单一节点的访问量瓶颈。如果在内存中无法加载Redis的全部数据而导致落盘,Redis的性能将有所下降,因此在数据量较大的情况下,将Redis的数据根据主键进行分片是不错的解决方案。

Redis通过MULTI、EXEC、DISCARD以及WATCH命令提供事务功能。Redis事务提供一次性的、按顺序的、且不可中断的执行命令的机制。但即使事务中的部分命令执行失败也无法回滚,因此Redis的事务与数据库领域中的事务并非是一一对应的关系。

2、文档数据库

文档数据库的代表是MongoDB。文档模型与面向对象的数据表达方式更加接近,它拥有自由度极高的Schema模型,可以方便的与JSON数据映射。

文档数据库的设计理念与关系型数据库完全不同,它没有静态定义的表结构,而是可以灵活在文档中随意增减属性以及嵌入子文档和数组。因此面向文档数据库设计应用程序,应是以对象本身为主,而不是优先考虑数据库表结构如何定义。这种设计使得开发工程师在修改程序逻辑时十分方便,无需考虑数据库表结构的变更导致的锁表等问题。

MongoDB的查询维度十分灵活,可以根据需要查找的内容建立索引以提升效率。此外,MongoDB在分布式的表现上也远强于关系型数据库,它可以将数据自动分片,并且能够透明化分片之间的负载均衡和失效转移。它还内置GridFS,支持大数据集的存储。

但是MongoDB无法像关系型数据库那样支持ACID事务,而是使用最终一致性事务,因此不建议将MongoDB用于非常关键的如订单、交易、账务等业务系统,而是用于论坛等对数据事务要求级别低一些的业务系统中。

3、列族数据库

列族数据库的代表是位于Hadoop大数据体系中的HBase。它是专门用于处理海量数据的分布式数据库。

HBase通过行主键和列族来确定一条记录,每个列族中的属性是不固定的,这一点与文档数据库类似。HBase同样能够自动切分数据,使得数据存储自动具有水平扩展的能力。HBase的数据存储在HDFS这样的分布式文件系统中,对于海量数据的支持是最好的。

HBase采用LSM Tree (Log-Structured Merge-Tree)。它将对数据的更改放在内存中,达到指定的阈值后再将更改归并后批量写入磁盘,将单个写操作转换为批量写操作,幅大提升写入速度。但在读取数据时,HBase则需要分别查找内存和磁盘中的数据,对性能产生一定影响。因此Hbase更加适合写多读少的应用。另外,Hbase同样不支持ACID事务,并且只能通过行键来查询数据。

图数据库是用于处理图关系的数据库,用于特殊场景,因此这里便不再介绍。

总的来说,NoSQL数据库的种类繁多,分别适合用于不同的场景。我们通过下表简单对比一下前文介绍的三种类型NoSQL数据库:

关系型数据库尚能饭否?NoSQL、NewSQL谁能接棒?

虽然各种NoSQL的使用场景有很大差别,但它们大多很好地支持了分布式数据库所需要的分片和数据迁移等功能,在海量数据和大并发的支持方面,强于传统的关系型数据库。

NoSQL数据库虽然可以提供良好的扩展性和灵活性,但它们的不足却是十分明显的:

不同的NoSQL数据库都有自己的查询语言,相比于SQL,制定应用程序标准接口难上加难。并且NoSQL也无法提供ACID的事务的操作,因此很多企业无法放心的将NoSQL应用于核心业务系统中。

正如NoSQL的定义所说,它们仅仅是基于SQL的关系型数据库的有益补充,而非关系型数据库的替代者。

三、冉冉升起的NewSQL

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

NewSQL是对各种具有分布式可扩展的数据库的简称,它继承了NoSQL对海量数据的处理能力,同时还保持了传统关系型数据库对SQL和ACID事务的支持。NewSQL的关注重点在于混合式(Hybrid)数据库,它们更倾向于找寻不再区分OLTP与OLAP查询的多模式数据库架设方案。

在2016年,Andrew Pavlo与Matthew Aslett发布了一篇论文:《What’s Really New with NewSQL?》,在文章他们将NewSQL划分为3个大类:新架构(New Architecture)、透明化分片中间件(Transparent Sharding Middleware)和云数据库(Database-as-a-Service)。

论文参考链接:

https://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf

1、新架构

这一类NewSQL是全新的面向分布式的架构设计的数据库系统。

它们一般使用share-nothing的架构,支持多节点并发控制、高度容错的自动化数据副本复制、流控以及分布式查询处理等特征。

由于它们是天生面向分布式多节点而设计的系统,因此对于查询优化和节点间的通信协议等处理的更加出色。举例来说,NewSQL的数据库的多数据节点间可以直接通信,而无需依赖中心节点。

除了Google的Spanner,其他类似的数据库都需要自行管理数据在磁盘和内存中的存储与分布。这意味着该类型的数据库系统负责将查询发送到数据节点,而不是将数据复制到请求节点以减少网络传输。

由于采用了全新的架构设计和存储引擎,并未充分经过时间验证,所以企业的技术选型者们格外的谨慎。同时,又因为有运维新一代NewSQL经验的工程师数量也较少,所以相比于关系型数据库,当前的使用者还相对小众。很多企业目前都会尝试跟进全新架构的NewSQL,但尚未迁移核心系统。

最典型的新架构类型的产品是Google的Spanner以及国产数据库TiDB。

2、透明化分片中间件

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

透明化分片数据库中间件的核心优势是兼容性,它可以成本较低地在系统现有的单机关系型数据库与分片中间件之间切换,而无需开发者做任何代码上的改动。它们旨在充分合理地在分布式的场景下利用传统关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读