查看原文
其他

云数据库的本质是什么?

常雷 IT大咖说 2022-07-14



内容来源: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,支持广域网的复制。


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


相关推荐


推荐文章


近期活动

 IT大咖说  |  关于版权 

本文由“IT大咖说(ID:itdakashuo)”原创,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10,茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!


点击【阅读原文】 打开干货通道

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存