云数据库的本质是什么?

内容来源: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大咖说(itdakashuo)

原文发表时间:2018-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小文博客

腾讯云+校园全新推出不限量学生优惠套餐通知

https://cloud.tencent.com/redirect.php?redirect=1014&cps_key=c2ab27bee63e530286b...

9.4K90
来自专栏IT派

“史上最严”朋友圈外链管理规则更新:删除对转播内容证照要求

导读:朋友圈是用户分享和关注朋友们生活点滴的空间,为保障微信用户的隐私和合法权益,微信会一直对朋友圈外链进行严格管理。

13720
来自专栏CSDN技术头条

如何设计一款优秀的软件架构

“风语者客服+”是针对中小型企业推出的客服SaaS,节约了企业自建客服系统所需的巨大成本。为了给企业提供稳定可靠且优质的服务,我们在整体架构上费尽心思。虽然不尽...

20990
来自专栏数据派THU

数据蒋堂 | 计算封闭性导致臃肿的数据库

来源:数据蒋堂 作者:蒋步星 本文长度为1873字,建议阅读5分钟 本文讲述计算机的封闭性如何导致了臃肿的数据库。 许多大型用户的数据库(仓库)在运行多年之后,...

219100
来自专栏FreeBuf

键盘敲击识别技术真的靠谱吗?

所有人都知道密码是靠不住的。于是现在有一个有意思的行为生物识别是“你是如何打字的”,或称为输入行为生物识别技术。 生物识别正在广泛推广 大多数网络用户在选择密码...

24050
来自专栏互联网数据官iCDO

活用GA的监测协议(Measurement Protocol)功能,实现你想不到的数据监测!

大约两年半以前,一位当时就已经从事互联网数据工作多年的前辈在笔者边上如是说:“最没有不可替代性的就是数据分析师,就是个锦上添花的。像什么策划啊、产品啊、美工啊、...

69380
来自专栏敏捷开发&项目管理

敏捷项目需求拆解&发现用户故事

需求文档和敏捷中的Epic,User Story, Task之间是什么关系以及如何将需求文档转换成敏捷方式的描述,指导开发人员。 一直是很多公司团队比较困扰的问...

60360
来自专栏跨界架构师

不知道是不是最通俗易懂的《数据一致性》剖析了

  本文是本系列的第一篇。从普遍认为的分布式系统中最最最重要的数据一致性开始。内容适合人群>=0年技术相关经验。

12240
来自专栏PPV课数据科学社区

【译文】用R创建云词

在这篇文章中,我会向大家展示如何利用文本数据在R中建立云词。我们会使用一个包含20万个问题的数据集,而这数据集可以在这里下载(感谢reddit网站的用户trex...

27630
来自专栏web前端教室

是什么拉开了前端开发工程师之间的技术差距?

假设所有的前端程序员的技术水平都是0,二三年之后必然会有一些人水平拨尖。那么是什么造成了他们之间的区别呢?就学习态度来讲,好像许多水平平庸的程序员,他们也是经常...

22760

扫码关注云+社区

领取腾讯云代金券