导语:“数据库以及机器学习技术的发展,对于数据库的智能化以及自动化运营平台带来了非常多的挑战。” 阿里巴巴集团副总裁、阿里云数据库事业部总裁李飞飞在2019阿里云峰会上分享时表示,阿里云希望数据库的内核加上平台能够做到自动优化、自动异常修复、自...
“数据库以及机器学习技术的发展,对于数据库的智能化以及自动化运营平台带来了非常多的挑战。”
阿里巴巴集团副总裁、阿里云数据库事业部总裁李飞飞在2019阿里云峰会上分享时表示,阿里云希望数据库的内核加上平台能够做到自动优化、自动异常修复、自动安全保护、容量自动管理以及运维自动化等。
在智能化的尝试上,阿里巴巴做了一个智能化平台SDDP,实时监控数据库的状态,采集他的性能指标,用机器学习的方法做一些模型,实时更新数据库的参数。
同时阿里巴巴利用数据分块技术,已经可以做到两地三中心,甚至两地四中心实时的数据同步,做到跨中心跨城的数据高可用。
李飞飞认为,明显的技术趋势是,数据库本身是一个系统,任何一个系统对有限的资源应进行高效管理、安全使用。要不断关注硬件的发展,用硬件的技术发展红利提升系统的性能。
李飞飞演讲实录如下:
非常感谢大家对阿里云数据库的支持和信任,今天跟大家分享一下我们阿里云数据库这么多年发展历程,和对下一代云原生数据库技术发展趋势做一个总结报告。
首先看一下这个排名,上面列了大概300多款数据库,对流行度有一个评比。我们看到一个很大的趋势,这边是各种类型主流的数据库,圆圈代表这个数据库现在的市场份额以及流行程度,箭头代表迁移的趋势。也就是说我们看到越来越多的用户从传统的商业形式迁移到开源的数据库生态里面去,主要是以MySQL和PostgreSQL这两个数据库为代表。所有这些都是传统的关系型数据库,我们也看到越来越多的用户、企业以及业务开发,用到了种类丰富的NOSQL数据库,这是整个的业界大趋势。
再仔细看一下根据DB-Engines流行趋势的排行,红线代表传统商业型的数据库,他的市场份额不断下降。蓝色的以开源生态为代表的趋势越来越强劲明显。从份额来看,关系型数据库占75%,剩下25%是非常细分的部分,有各种各样的NOSQL数据库,构成了整个数据库市场的生态。其中当然包括实时数据仓等等这样的类型。
如果看不同的云厂商提供的数据库类型来看,我们总结出来一个反应,不同的云厂商都有非常丰富不同类型的数据库产品,其中以AWS和阿里云为代表,一个是市场领先的云厂商,一个在世界目前排名第三,中国大陆排名第一的云厂商。我们看到他提供的数据库引擎产品基本类同。其中最核心的产品列在这边,阿里云最核心的两款产品,一个是POLARDB,一个是ADB。一个是关系型的TP数据库,一个是实时交互式数据仓库,对应的亚马逊上面的产品就是Aurora和Redshift,我后面会展开讲这两个产品的技术特点。
数据库是云上很关键的一环,我个人认为数据库是连接Iaas以及云上智能化运用这一层,中间最关键的一环,这不仅仅是我个人的观点。
数据库总的来讲可以分成几个类型,最经典的传统的OLTP数据库,主要解决了数据计账转账过程中数据正确一致性在高并发海量数据下的挑战。随着数据量不断增加,我们希望对这些数据进行分析,这就引出了Oracle数据库做海量数据分析、交互式分析这样一个类型的数据库。
除此之外在2008、2009年以谷歌为代表推出了NOSQL的概念,放弃对数据的一些要求,换来水平拓展以及对非结构化数据处理能力的提升。除此之外还有工具类的产品,工具类的组建比如备份、传输、数据管理等等,这整个形成了数据库产业界、技术界、学界的大图。
我们看一下数据库发展的历程,最早从结构化数据开始发展到今天,因为海量数据的诞生,读写冲突,导致我要去做ETL等等技术做数据仓库,这是数据库发展三四十年最主要的主线。发展到今天因为我们异构多源的这种数量类型,导致我们需要不同类型的NOSQL数据库,以及我们对海量数据高并发下处理的需求,又延伸出来了现在最流行的NEWSQL这种概念,这个图总结了数据库发展40多年的技术历程。
看当前数据库的架构上的挑战和革新,主要有三种架构,一种是传统的单节点加工,这里每个DB里面包含了CPU和内存,底下是磁盘。传统的单节点架构CPU和磁盘是绑在一起的。最新的云原生架构,最核心的用两个概念可以解释清楚,一个是存储计算分离,存储与计算节点解耦。第二我希望把单节点的存储能力做到越大越好,我利用像RDMA远程高速共享网络这种技术,使分布式存储节点可以看起来像一块本地盘,也就是说拿比较标准的技术语言来讲,就是分布式共享存储。
这样就做到了存储和计算可以分开地进行弹性伸缩,上面有一个共享状态,这些节点之间是共享状态的,避免了我对分布式事务处理的挑战。这个架构受RDMA网络的限制,所以我们还需要另外一种架构,就是传统的分布式架构,这种架构下要把单节点的架构挂在这个下面,这边我们也推出了基于POLARDB的分布式版本。
除此之外还有一些比较新出现的技术趋势,大概总结一下。一个是我们认为多模,分为北向南向。南向是你的存储层,你的数据类型可能存储层多种多样,比如说存储层结构化数据、图的数据、文档的数据等等。但我的查询层希望有一个标准统一的查询接口,这样一个组合就给出了我们比较标准的数据服务。还有一种是南向的存储可能只有一种形式,一般来讲我会选一种非结构化的存储格式,但是北向的查询接口可以有多种多样的查询接口,可以按照图的方式查、文档的方式查。
另外数据库的发展以及机器学习技术发展,对于数据库的智能化以及自动化运营平台带来了非常多的挑战。比如说我们希望大量使用机器学习的技术做两件事,一个对数据库内核进行优化,比如说我的传统CPO能不能用机器学习的方法找到更好的查询计划。另外一个纬度我的运维管控平台能不能使用机器学习以及人工智能的技术做智能化的运维和管控。对于我们来讲,我们希望数据库的内核加上平台能够做到自动优化、自动异常修复、自动的安全保护、容量的自动管理以及运维自动化等等。
最后非常明显的技术趋势,就是数据库还是一个系统,任何一个系统对有限的应对资源进行高效管理、安全使用。当然我们要不断地关注硬件的发展,用硬件的红利,硬件的技术发展红利提升系统的性能。具体来讲在我们的研发过程中,我们就会看如何利用RDMA的网络,如何利用NVM这种技术,如何利用GPU进行加速。这种硬件技术的发展,不断地推动数据库系统的不断演进和迭代。
下面讲一下阿里云具体的两个例子,一个POLARDB,一个ADB,讲一下刚才我提到的技术趋势,在我们的产品内核里面一些具体落地和具体解决方案。
这是去年双十一的真实曲线,这是我们在双十一11月11号凌晨12点之前的系统负载,具体数值因为商业秘密我藏掉了。在11月11号12点凌晨第一秒的时候,系统负载有一个122的增长,相当于你站在海滩上,海浪原本这么高,突然下一秒你的海浪有122倍的增长,这个对我们的系统带来了非常高的挑战,我们系统需要极致的弹性、极致的性能,才能够满足在这样的海啸来临的时候,系统的反应速度没有太大的变化。
我们怎么做到这一点?怎么支撑阿里的业务,同时服务好阿里云上形形色色各行各业的用户,这个图解释了我们的核心技术。我们以POLARDB为核心,他是下一代云原生数据库,结合我们的应用迁移评估工具以及数据传输工具,支持我们线下传统的数据库向云原生数据库演进,同时我们使用ODB,形成与POLARDB的闭环。这里我们用DTS做一个增量实时同步,利用下一代数据仓库的技术和理念,去支持客户对海量数据复杂查询分析的需求。另外通过阿里云的市场以及合作伙伴,打造丰富的生态,形成这么一个闭环的图。
这个图是POLARDB的架构,看起来很复杂,实际上他就是共享存储计算分离中间的那个架构图,实际上完全一样的。底下是我们的分布式共享存储,利用RDMA网络连起来,看起来对上面的内核来讲,他看起来就像一块本地磁盘。我的数据会保证数据的高可用,一份数据会打散成三块,比如说A会分成三个小的,利用分布式数据一致的协议我们对他进行优化,保证我的数据三份数据完全一致的,这样使得我数据库也具备了高可用的能力。
上面是我的计算节点,那里面有他的CPU、内存。这里我们在现在的POLARDB版本里面,我们要求有一个可写可读的节点,剩下的节点是只读节点。当复杂查询来的时候,我可以利用弹出来更多的只读节点,满足高并发的需求,但是我所有的写所有的更新都是在这个节点进行的,避免了分布式数据处理带来的一些非常大的复杂性以及对性能的影响,这是POLARDB核心技术上的特点。做到这些,就能够达到右边列到的所有性能。
同时因为我的内核层完全可以拥抱开源生态,所以我的内核层完全可以基于MySQL来做。所以我们两个不同的版本,第一个版本百分之百兼容MySQL,第二个版本百分之百兼容PG,基于百分之百兼容PG这个版本上,因为大家知道PG相对Oracle的兼容性比较好,我们又做了很多改进和革新,做出了另外一个版本,高度兼容Oracle。同时他的性能相对于MySQL以及Oracle有大大的提升。
这个图是传统MySQL主备高可用的架构图,我们做数据库的人对这个非常熟悉,我不过多展开讲。
在POLARDB我们通过分布式共享存储,上面是我们一写多读的计算节点,所有的节点看到的是一份物理数据,避免了传统MySQL主备架构里面这种对计算以及存储资源的浪费,有读写分离,同时我的存储和计算分离以后,我的计算节点我所有的状态信息都在一份数据里面,我可以按照客户的需求弹出或者缩进计算资源,按需按量使用分配。
为了在我的多个节点之间做负载均衡,我们前面做了一个智能的PolarProxy,这个PolarProxy会把客户的应用发放到Proxy这边做一个动态的负载均衡,智能化地把请求分发到不同的节点上去,当然所有的写更新的节点都会发到主节点,所有的查询读就会通过我的PolarProxy去下发。下面这一层我的分布式共享存储这一层,做了PolarStore,上面有一个文件系统无缝对接类似像MySQL或者PG这样的内核。
这个展开再讲一下在Polarstore这一层发生了什么事情,我们有把数据分块这样的概念,每个数据进来会打成很多个小的块,然后每个小块我会分三份,这三份之间保证数据一致性。这个在分布式共享存储这个层面上实现了数据的高可用,永远不用担心数据丢失这个问题。
另外我们在主节点和物理节点之间,通过我们的Redo日志进行持续的数据回放,不仅仅依赖物理数据,也尽可能利用日志的数据,因为我的主节点更新下来以后,只读节点如何保证他能读到最新版本,我通过Redo日志的回放,来保证他们的数据一致性。
这一页主要再深入解释一下刚才Proxy所做的事情,主要就是安全防护,最重要的是他有一个统一的访问节点来做动态的负载均衡,这样的话我的会话一致性、负载均衡、安全保护等等都通过一个节点完成。
利用这些架构以后就做到了极致的弹性,可以通过这一层实时监控下面Polarstore用户所分配的存储空间以及实际使用的空间。当他实际使用的空间已经逼近我跟他分配的空间的时候,我会自动地帮他进行弹性的扩容。反过来讲如果他使用的空间远远好于我分配给他的空间,我可以智能化动态帮他进行弹性的缩融。
在计算这一层可以根据计算需求弹出新的只读节点,当你完成任务时也可以缩回去。这样的话带来下面这个图,我可以相对于传统的POLARDB架构完美地满足客户对弹性计算、弹性资源的需求,按需按量使用。怎么理解?黑色的部分表示你必须要使用的资源,比如你的存储,你有10T的数据,不管你怎么做架构,这部分的资源必须付出成本。这一块的资源,可能是你在高峰期产生的资源消耗,在POLARDB这个架构下我可以按需按量使用,等你在业务峰值的时候弹上来需要的资源,然后快速释放。就有点像家里使用自来水的感觉,对客户业务有非常大的帮助和好处。
第三种架构分布式架构,结合DRDS,我们在上面挂一层DRDS以后,上面可以跑多个POLARDB,这个也是支持我们集团双十一的核心架构和技术方案。
TP这块讲完,下面讲讲闭环里面很重要的一环实时数仓,当我有海量数据的时候,一种你使用传统的解决方案,另一种是使用传统的数仓,传统的数仓都需要建一个DataQ,DataQ带来的问题在于你需要跑非常昂贵的ETL,如果你那个没有在DataQ里面,你实际上没有办法做实时的BI分析。说白了传统的数仓用DataQ的技术,就是把答案提前算出来,如果那个答案没有算出来,你没有办法做实时交互性的分析。
如果你用大数据的技术,从技术来讲他用的是一个BSP的模型,这里面就有很重要的问题,大家可能也听说过一个很重要的技术,所有人要等最后一个任务完成才能跑下一轮。我们ADB怎么解决问题?用数据库的技术解决大数据分析问题,我们不需要建DataQ,我们做了一个智能化的资源调度管理器,动态分配计算资源和存储资源,同时我做了CBO以及全量的代码生成,这些技术以后我做了将大数据的生态演进到现在我们推出的新概念叫做快数据,从大数据到快数据的演变。
大数据生态里面这些传统的大数据明星公司纷纷在走下坡路,我们认为将来的下一代大数据分析,一定是全量数据+实时分析。
ADB主要利用了这些技术,首先在每一列上都做索引,第二存储引擎做了一个自研的行列混存引擎。传统的索引非常昂贵,我们利用了大量新的索引技术,大大降低了索引成本。利用这些功能以后,我们看一个具体的案例。达摩盘在这个案例下我们需要支持将近超过十万张表,70T的数据等等,我们能够支持120万家每条、条每秒的峰值写入。我们在这个场景下,在不建数据仓库的前提下可以支持实时交互式的数据分析,做到甚至毫秒级的反应速度,把大数据的数据、数据库的数决,同步到这个引擎里面。
另外刚才讲到多模的概念,我们核心的数据产品叫DLA,我南向存储层有多种多样的数据格式,我希望通过统一的产品界面去访问异构多源的数据生态。实际上我们的DLA可以支持15种以上不同的数据源,可以一个标准的SKL查询。
他集成了一个开源的Presto引擎,以及开源的Spark引擎,同时对他们做了很大的优化。这两种引擎,都可以对接不同的数据源,同时做交互式的分析提供给我们的BI工具。
DLA和ADB最大的区别在于DLA没有四级的存储引擎,所以他的性能肯定没有ADB那么好。但是因为他没有自己的存储引擎,你不需要提前购买任何规格,不需要存储任何状态,所以他的成本相对来讲特别低,同时能够支持多种数据源。
这里面还有一个很重要的工具,叫DTS。从我的TP到AP,或者上云过程中需要做数据的全量或者实时增量同步,我们都通过DTS完成这个任务。DTS也支持一定功能的ETL,同时有一个功能做数据的实时订阅和分销,DTS是非常重要的一环。
我讲到的所有这些,我们生成了整个在数据库生态里面的完整闭环。
最后讲讲我们在智能化上的尝试,在阿里巴巴现在做了一个智能化平台叫SDDP,我们实时监控数据库的状态,采集他的性能指标,用机器学习的方法做一些模型,实时更新数据库的参数。比如我们做了一个individualized Buffer Tuning,我去动态调整每个数据库里面的Buffer的大小,传统的数据库Buffer大小都是定死的,但是随着客户用户负载的变化你不需要这么多,这个时候你需要更小。我们通过刚才讲的平台,利用智能化的技术,动态调整每个Buffer的大小,我们现在监控了超过一万个实例在阿里巴巴平台内部,平均每天可以节省27个TB内存,而且业务性能没有任何大的变化。
最后讲讲高可用,我前面讲到传统的是主备方式,我们利用刚才讲的数据分块这些技术,我们可以做到两地三中心,甚至两地四中心,实时的数据同步,做到跨中心跨城的数据高可用。数据安全也非常重要,我们在阿里云的数据库体系里面支持标准的TDE等等,在传输过程中大量使用TRS,保证我们客户的数据在上云整个链路过程中全程加密的、全程安全可信的。
最后讲一下大图,这是我们整个阿里巴巴云上数据库的产品大图,从工具到我们的引擎产品,黄颜色是自研的,黑色是我们开源及托管第三方产品,到TP、AP,到NOSQL以及到管控平台。相信大家在上云过程中、业务发展过程中、业务平台上一定能够找到适合你业务发展的数据库技术、数据库产品,利用云原生的技术,不断挑战新的业务高峰,希望我们能够利用我们的技术、我们的产品,和大家一起共同高速成长。
另外讲一下阿里巴巴非常愿意拥抱开源生态,这也是为什么我们的POLARDB包括ADB都会有不同的兼容版本,有MySQL的兼容版,有别的兼容版等等,甚至我们会把POLARDB核心技术,通过一个开源的分支叫阿里SQL去进行开源回馈社区。所以你在我们阿里巴巴阿里云上面的RDS平台上使用的MySQL,实际上是我们的阿里SQL,比社区版的MySQL性能成本都要好。
在此我也邀请在座的各位数据库技术爱好者,加入到阿里SQL的开源分支里面,一同贡献提升这个性能。
最后讲一下结果,我们利用所有的技术做到了什么?国际分析最新报告,我们的营收排到全球第三,超过了传统的谷歌、腾讯、华为等等这些厂商,在云数据库这个厂商。所以我希望和大家一起推动数据库技术向更高的高峰发展,推动各位的业务向更远的方向演进,利用这些技术也支持了像城市大脑这些复杂的应用,大量使用了我们刚才提到的这些技术。
我今天的分享就到这里,后面我们团队还有各位技术大咖会带来更深入的分享,从TP到AP等等,希望大家在这个场子里面得到非常深入的了解和分享,谢谢大家!