前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云数据库的本质是什么?

云数据库的本质是什么?

作者头像
IT大咖说
发布2018-08-08 09:55:16
2.3K0
发布2018-08-08 09:55:16
举报
文章被收录于专栏:IT大咖说IT大咖说

内容来源:2017 年 11 月 18 日,北京偶数科技创始人兼CEO常雷在“第七届数据技术嘉年华”进行《云数据库的本质》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:4055 | 11分钟阅读

摘要

数据仓库的演进分为三代,第一代数据仓库采用共享存储架构(比如Oracle Exadata),可扩性差,使用专有硬件,价格高。第二代数据仓库采用MPP架构,采用无共享架构(比如Teradata),使用普通X86服务器,可扩展至几十节点,但很难满足大数据需求,架构不够灵活,比如难于实现秒级扩容。

Apache HAWQ属于第三代数据仓库,使用存储与计算分离架构,可扩展至数千节点,架构灵活。另外,HAWQ从著名第二代MPP数据仓库系统Greenplum Database演化而来,继承了Greenplum Database的SQL以及对第三方工具的兼容性,所以,在兼容性和性能方面大大优于其他第三代Hadoop SQL引擎。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

数据库背景

数据生态系统

2016年全球数据仓库市场规模已达数百亿美金,主要由几大部分组成。最底层是云的部分,包括公有云和私有云。往上为数据层,这部分中传统的关系数据库和NoSQL、NewSQL包含在OLTP中,流的处理和采集等归属于ETL,还有就是大家最关心也是占比最大的数据仓库领域,再上层则是BI和目前最火热的机器学习/AI。

以上每一部分的市场其实都不小,数据的增量也基本保存在10%-45%之间,即使是大家不太注意的ETL的市场也接近了100多亿美金。

而我们接下来将着重介绍的是数据库的部分,首先来回顾下数据库的历史。

数据库:55年

数据库这个词首次出现至今已过了55年,最早是由Inverted File Database System和System Development Corporation这两家公司在一个军方项目中提出的,虽然这不一定是世界上第一个数据库,但是DataBase这个单词却是首次被提出。

后续数据库经历了几个比较繁荣的发展阶段,第一阶段是在1960年代此时的数据还是网状/层次模型结构,第二阶段的1970-1990年代主要是关系性数据库,第三阶段从2000年开始逐渐出现了一些新型数据库。

数据库的核心

数据库中核心的研究领域主要分为几部分。第一部分为数据模型和查询语言,数据模型包含数据的表示以及理论支持,有模型之后当然就需要有查询语言来让程序访问数据,最初的查询语言类似于程序语言,相对比较复杂,后续才发展出了现在的SQL语句。第二部分为查询优化和执行,这也是数据库最核心的部分,面临复杂查询时优化和执行必不可少。第三部分为索引和存储,数据库的存储其实非常复杂,经历了很多的演练,从最早的行存慢慢演化出来了列存以及存储于演示分离的架构等。第四部分为事务处理,传统意义上的数据库存储包含索引、存储、事务这几个部分,这里之所以将事务处理分离开来,是因为相对来说这部分比较独立,在各个不同数据库中也都将它独立出来了。

数据库演化

这张图展示的是网状/层次模型的解析图,左下角是网状模型存储的数据,它们通过指针相互关联,可以看到整个模型中存在大量的指针,相对来说还是比较复杂。网状模型数据的存取使用的是一种过程性的语言,基本上类似于写程序语言,用起来很不方便。

1970年开始Edgar F. Codd提出了关系模型,用数学的理论形式来表示数据模型,简单易用是它最大的优先。后来虽然出现了NoSQl、HBse、NewSQL等各种数据库,但是到最后大家都会发现SQL语言还是最简单的,不管是通过key value的形式还是语言的形式访问数据库都没有被用户所熟悉,因为相对来说SQL语句更类似与自然语言能被很好的接受。

2000年之后出现了第三大类模型,这一类的模型数量相对要多一些,包括Graph、Tree、KV等模型,其中Tree类型的数据库之前有一段时间很火热,MongoDB就属于这一类。这些比较热门的数据库一般在10多年前研究界都会有所研究。

其他分类方法

数据库的分类不光可以通过模型来分,也还有其他各种方法。比如事务处理和分析处理,事务交易是目前大部分的数据库涉及的领域,分析处理则是从70-80年代开始出现,分析类的数据仓库也是大数据中涉及最多的一部分。第二种分类方式是并行和串行,串行的出现的时间相对并行要早一些,因此早期的数据大多都是串行。第三类是基于硬件的分类,硬件和软件向来都不可分离,早期的数据库都是基于CPU,而随着硬件的发展数据库也做出了相应的变化,不过由于硬件的局限性目前主流的还是CPU。第四类是云数据库和非云数据库,虽然从运维的层次来看云数据库相对传统数据库简化了很多,但它本质上是一种商业模式,真正在数据库核心上的改变并没有多少。

介绍完分类方法之后,我们重点来看下其中的分析处理和云数据库。

数据仓库的演进

分析处理主要涉及的就是数据仓库。Teradata是最早期做数据仓库商业化的公司,于1984年推出了第一个MPP数据仓库。需要注意的是最初的数据仓库应用技术并不是MPP而传统的共享存储方式。传统数仓可扩展性相对较差,最多只能到十几个节点,第一代MPP解决了部分可扩展性问题。2000年左右又出现了第二代MPP,使用常见的X86架构硬件实现了并行处理。MPP的缺陷在于不能应付太大的数据规模,基本上100个节点就到了瓶颈,主要是因为无法很好的管理节点。所有第三代数仓出现了,Hive, HAWQ, SparkSQL, Snowflake等就是属于这一类,它有一个明显的特点就是实现了存储和计算的完成分离,能够根据资源调度计算,可扩展性得到了很大提升。

数据仓库引擎比较

这里将这三代数据仓库放在几个象限内进行了比较,第一个维度是性能和兼容性,第二维度是可扩展性和开源、开放性。传统的共享存储数据仓库被放在左上角,中间部分是MPP,由于云数据库的本质架构并无太多变化,所以也位于中间。最后是第三类系统,他们性能往往不如老牌数据库优化的好,兼容性也较差。

NewDW的细分类别

根据存储的不同新一代数仓还能进行更细的划分。第一类是SQL on Hadop,SparkSQL、Hive以及早期的HAWQ都属于这一类。第二类是SQL on Object Store,随着云计算的发展很多创业公司都将数据存储在云端,阿里的对象存储就有很多中小型公司在使用。前两大类虽然在架构上还不错,但是都有着同样的局限性,想要取代第二代数仓还有很远的路要走。这也就是第三大类Hybrid(混合存储)出现的目的,这一类有着自己的原生存储,对外部存储可插拔,其中走的比较前面一点的数据库有Impaia和HAWQ。

云数据库

云数据库的创新并不多,大部分都是将现有的数据库搬到云上,大致有这样几个分类。第一类是数据库服务,主要是对数据库做了一些工程性工作,比如新增前端界面,然后做部署、收费和一些安全控制。第二类就更简单了,直接将虚拟机镜像放在云端。第三类容器镜像针对的是传统的TP,比如Mysql和Postgre就有一些可以直接使用的容器镜像,对于并行的数据库还没有很好的方案。

云数据库相对于传统数据库不同之处可能只有这几点,部署运维比较简单,收费模式不同,能做到简单的弹性伸缩。

OuShu DataBase的前世今生

HAWQ主要发展历程

这就是HAWQ的发展历程,从刚开始提出创意到做出原型系统, 再到第一代产品完成然后到后来开源,最后成立创业公司,基本上是这样一个过程。2017年的时候我们又推出了新的执行器,性能上有了10倍的提升。

Greenplum版本演进

HAWQ的原型系统最初是基于Postgre和hadoop,后来在进入Greenplum之后我们有了Greenplum的源码,所以后来将Postgre替换成了Greenlpum。上图是Greenplum Database最初始的架构,非常经典的MPP模式,每个节点上有几个单节点的数据库,每个单节点都有一些mirror。比如上图的结构中有4个节点,每个节点中有2个主数据库,还有两个mirror,这时候的并行度就是8。

上图是HAWQ的Alpha版本的架构,这个版本还不能算是第三代的数据仓库,因为这时只是单纯添加了存储,计算和调度都没有改变,解决的问题有限,包括Recovery、动态扩容、调度、固定并行等问题都还存在。

1.0版本中我们将mirror 去除了,使得Recovery更加简单,解决了原先4个问题的其中之一。

2.0版本做了大量的架构变动,这一代开始才真正的达到了存储与计算的分离,实现了秒级扩容,可以根据数据进行灵活调度,以及根据查询规模决定并发大小等。在这之后也能和容器云平台进行很好的结合。

HAWQ3.0目前只在企业版本中才会发布,开源版本还未发布。数据库最核心的部分就是执行器和优化器,针对这点我们在3.0中完全重写了一个新的执行器,为此做了大量的工作,每个算法都进行了优化,因此在性能上有很大的提升。

这里展示的是4.0将要做的工作,HAWQ的存储完全换了一套,可以认为是一个NewSQL引擎,但相对于目前大多数只关注事务型处理的NewSQL,我们还会从分析型数据仓库的角度来做大规模的跨数据中心的复制。4.0的整个架构基本上是P2P,没有master,支持广域网的复制。

以上为今天的全部分享内容,谢谢大家!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档