关于sql:云原生演进趋势下传统数据库升级实践

33次阅读

共计 6883 个字符,预计需要花费 18 分钟才能阅读完成。

简介: 在数字化背景下,咱们有许多思考。数据库跟以前那有什么不一样呢?什么是所谓的云原生数据库呢?作为应用数据库的开发者,对数据库的需要有什么变动?现在应用数据库咱们个别会提什么样的诉求?本文将一一为大家解答。

一、概述云原生数据库

(一)云计算是数字化的基础设施

家喻户晓,目前云计算曾经成为数字化的基础设施,整个社会也在数字化。数字化浸透进咱们的日常生活中,除了衣食住行,还包含教育、医疗、游戏等。

以医疗畛域为例,早些年去医院,不论是验血还是拍胸片,肯定是要去取纸质报告,而后打一张塑料的胸片图。然而最近一两年,除了三甲医院,其余医院也根本是通过网上向患者提供无论是报告还是胸片之类的资料,医疗畛域数字化景象非常显著。

而这些数据全副都数字化当前,面临一个十分大的问题,它在哪些平台承载,怎么样承载?阿里云是其中十分重要的一个环节,数据库在数字化过程中承载了数据的生产、集成、实时处理和剖析的整套流程。在整个数据库周边,可能还有硬件、平安、弹性计算等能力,这些大大小小的货色最终组成阿里云这个平台。

(二)什么是云原生数据库技术

云计算在重塑数据库技术与商业。

在数字化背景下,咱们有许多思考。

数据库跟以前那有什么不一样呢?什么是所谓的云原生数据库呢?作为应用数据库的开发者,对数据库的需要有什么变动?现在应用数据库咱们个别会提什么样的诉求?

现在,下层的业务变动十分快,包含以前阿里巴巴淘宝外部其实也有同样的问题。业务的疾速变动让开发者面临一个十分大的挑战,就是要十分疾速地适应变动。在云遍及之前,这个过程其实还是比较慢的,从构建服务器,而后网络打好,装置操作系统和数据库等,整个流程十分长。

对数据库的诉求,总结起来可能有以下几个。

第一个就是咱们心愿更专一在业务开发上,不要把太多工夫放在底层的硬件、软件、机房、网络等设施的配置上。

第二个是开箱即用的,咱们心愿数据库创立好了能够间接应用,不须要再去做配置、优化等十分繁琐耗时且专业性强的事件。

第三个是平安可信,把数据放在第三方平台上,平安可信是一个十分根本的要求。

第四个是凋谢兼容,咱们不心愿被哪个云厂商锁定,心愿能十分自在地迁徙进来和迁徙进来。

第五个是海量扩大,随着业务爆发式的增长,零碎压力很快就会变成原来的数倍甚至数十倍。在这种状况下,如果没有一个很好的横向、纵向扩大的数据库系统,那么很难撑持业务失常运行,解决起来就会十分辣手。

第六个是全球化。中国很多游戏厂商在海内的拓展和推广做得十分不错,尤其是在东南亚一带,另外也有一些游戏在欧美日本取得了十分大的胜利,所以当初有些开发者也面临着全球化的诉求,作为数据库的基础设施,应该思考如何提供全球化的能力。

第七个是继续可用,咱们原来本人做一套数据库系统,继续可用也是外围思考之一。

除此之外还有可靠性,要求不能产生数据失落。

最初是低成本,当业务倒退到比拟成熟的阶段,咱们会关注低成本。

在这些客户诉求下,咱们思考下一代数据库或者说新的数据库要具备哪些个性,也就是云原生数据库它所具备的产品能力,如下所示。

第一个是全面托管,用户不再须要去关注装置、备份、部署、监控、高可用等,能够一键创立实例,创立进去的实例具备以上货色。

第二个是按量付费,按量付费能够让业务起步的老本变得非常低,否则机房、硬件、网络等一整套设施配置下来,老本十分昂扬。

第三个是按需弹性,它分为两个方面,一方面是要具备往上弹的能力,当业务在疾速倒退的过程中,数据库也要可能疾速往上弹。另一方面是往下弹,当业务顶峰过来了,须要很快地把资源使用量降下来,达到降低成本的目标。

第四个是生态兼容,无论用户目前应用的是 MySQL,还是 Oracle,或者是其余数据库,咱们能迁徙进来,也能迁徙进来。

上方是咱们认为云原生数据库它所具备的产品能力。

在这些产品能力底下,还是有很多的技术在反对。

六大核心技术别离是智能化、多模、软硬件一体化、平安可信、HTAP:大数据库数据库一体化、云原生 + 分布式。这六大核心技术撑持了上文的产品能力,解决开发者诉求。

(三)云原生关系型数据库 PolarDB

PolarDB 是阿里巴巴自研的新一代云原生数据库,在存储计算拆散架构下,利用了软硬件联合的劣势,为用户提供具备极致弹性、高性能、海量 存储、安全可靠的数据库服务。100% 兼容 MySQL 5.6/5.7/8.0,PostgreSQL 11,高度兼容 Oracle。

PolarDB- X 为 PolarDB 分布式版本,交融分布式 SQL 引擎与分布式自研存储 X -DB,专一解决海量数据存储、超高并发吞吐、简单计算与剖析等问题。

(四)云原生关系型数据库 PolarDB 产品架构

PolarDB 产品架构图

PolarDB 产品有以下个性:

  • 存储计算拆散

1)分钟级弹性升降级

2)分钟级新增 / 删除只读节点

  • 智能代理转发

1)实现数据库通明扩容

2)多种一致性级别

3)自定义 Endpoint

  • 分布式存储

1)反对 100TB

2)疾速备份与复原

3)更高单实例 IO 能力

  • libpfs+rdma+optane

1)高性能通明实现三正本 RPO=0

2)高性能写入:实现高并发的写入

  • 基于 redo 复制

1)只读实例毫秒级提早

2)解决 binlog/redo 双日志一致性与性能问题

  • 并行执行

1)局部场景下的查问与剖析

2)能够自在管制的并行度,保障性能与稳定性

这里次要讲一个和开发者应用过程中关系比拟大的个性:智能代理转发。

在数据库中有一个十分难的点,它跟应用服务器不一样,当应用服务器零碎压力特地大的时候,还是比拟容易做扩大的,能够加一组应用服务器,把相干的流量扩大到新的应用服务器上就能够了。

但数据库通常做不到,因为数据在查问和应用上都是互相关联的,数据不能简略地做拆分。PolarDB 在下层有一个智能代理层叫 Proxy,它为开发者解决了这个问题。当数据库系统压力特地大的时候,通过智能代理能够主动把一些查问的 Query 散发到别的只读节点上。比方原来是一主一备,能够变成一主三备,就能够把流量主动散发到三个节点。

大家可能想,这个不就跟原来数据库加几个备库是一样的情理吗?

PolarDB 通过智能代理解决了一个十分要害的问题,那就是加了这些只读节点当前,应用服务器上的连贯配置是不须要做任何改变,能够随时加上去,智能代理收到 Query 当前会主动转发过来。

以事实业务场景举例,比方某天前端的业务零碎通知咱们,今天早上 10 点要做一个促销流动,请做好数据库的扩容。

以前如果加了只读节点,可能遇到的问题是前端应用服务器基本就拜访不到这个只读节点,或者能够拜访到只读节点,但要对应用服务器的配置做一些扭转,可能导致利用要把应用服务器重启。当初通过 PolarDB 的智能代理能够无效解决这个问题,方便快捷地做容量扩大。

二、传统关系型数据库向云原生环境迁徙

(一)传统商业数据库替换的挑战

现在,如果要从别的商业数据库迁徙到 PolarDB 上,比方从 Oracle 数据库,一般来说有几个比拟大的挑战。

第一个挑战是利用耦合度高。通常状况下,数据库跟利用的耦合度十分高,如果要对数据库做一个动作的话,利用前端的利用要配合着一起做,可能会影响前端的可用性,因为通常状况下数据库底下承载的业务都是比拟要害的,动数据库往往意味着动前端利用。

第二个挑战是稳定性要求高。数据库一出问题,前端的业务就会出问题,所以数据库的变更和动作常常会在早晨执行。

第三个挑战是数据量大。因为当初业务都比拟大,因而外围数据库的数据量通常会比拟大。

第四个挑战是语法兼容要求高。尽管大家应用的都是 SQL,然而不同数据库的 SQL 还是不一样的。如果从 Oracle 数据库迁徙到 PolarDB,SQL 要做太多的革新的话,就意味着前端业务零碎的革新要十分大,状况也很简单。

(二)应用云原生数据库 PolarDB 替换传统商业数据库

是一个迷信的标准化、产品化的过程。

迁徙流程图

在阿里云上,咱们会提供一套标准化流程和产品帮忙用户从原始数据库移到 PolarDB 数据库。

首先,咱们会给用户一个工具或者脚本,到用户的零碎外面运行一下,它能够采集到用户数据库的一些特色,这个特色包含有哪些 SQL、函数、存储过程跟指标数据库写法不匹配,原始的数据库的特点,比方它是一个零碎压力特地大的数据库,还是一个热点数据特地显著的数据库。探测到这些点后,会通知用户在前期的革新中要留神什么问题。

上方表格就是在理论的业务过程中通过脚本跑进去的。

通过这个表格,咱们能够看到原始数据库如果要迁徙到 PolarDB 的时候,它整体的兼容性还是比拟高的。咱们一共探测了 6029 个对象,这个对象可能包含存储过程、数据表、索引序列,还有一些同义词等相干的货色,其中不兼容的对象只有两个,其实是比拟少的。报表里会指出具体是哪两个表,外面也有一些比拟具体的批改倡议,而后就能够迁徙过去了。

下图是一个比拟具体的过程,此处不具体开展论述。

目前,阿里云曾经把这一套标准化、产品化的流程和中国信通院一起做成了数据库迁徙的规范指南,开发者能够到网上查阅,遵循指南做数据库迁徙。

三、治理 PolarDB O 引擎(兼容 Oracle 语法)

(一)PolarDB 提供面向 Oracle 的全栈兼容性

PolarDB 提供的 Oracle 兼容性是包含多个方面的,除了语法层的兼容,还有物理存储层、逻辑层和接口层。

(二)治理 PolarDB O 引擎(兼容 Oracle 语法):常用工具

如果用户从 Oracle 迁徙过去,在应用或者治理 PolarDB 的时候,和原来有哪些不一样?

在管理工具方面,用户能够应用阿里云云端的数据管理平台 DMS,在管制台上找到叫登录数据库的入口,就能够登录到 DMS 上,如下所示。

第二个是用开源的数据管理平台叫 pgAdmin,在这个平台上能够做根本的数据管理操作,包含根底信息的查看,数据查问,看一些执行打算、表、对象等,如下所示。

四、PolarDB O 引擎(兼容 Oracle 语法)的开发实际:数据库根本标准

治理 PolarDB O 引擎(兼容 Oracle 语法):开发标准(1)

另外,阿里云有一些罕用的开发标准,开发标准是阿里云外部摸索进去的,也称为规约,在阿里巴巴外部是比拟严格遵守执行的,将来会公布在开发者社区和阿里云的文档体系中。开发标准分成几个方面,有些中央和开发者在具体应用 PolarDB 的时候关系会比拟大,上面简略论述一下。

标准中有一些是咱们外部要求强制执行,有一些则是举荐执行,用户能够依据本人的理论状况进行取舍。

上方为建表规约。比方有一个对字段名的标准,要求必须要用小写字母和数字,不能用关键字,为什么会有这样的标准?因为字段名的批改是一个代价比拟大的事件,通常不能“预发”。

咱们发现,在理论的生产过程中改一个字段名是十分麻烦的。因为后面的业务曾经在运行,如果改一个字段名,就意味着业务零碎不能失常运行。所以以前大多数的做法就是加新的字段,因而咱们对字段名提了一些标准,比方只能用小写字母,不能用关键字等。

第二个是表名和字段名,咱们要求加 create\_time 和 update\_time。这会带来几个益处,第一个就是如果数据产生谬误的时候,你能够很快晓得字段的批改状况和工夫。第二个是在上下游零碎外面,如果要拉取一些变动数据的时候,它也能够十分快地找到哪些数据产生了变动,而后去做对应的解决。

另外,表必须有主键。这里有几个起因,第一个是查问性能会十分好,第二个是在上游的零碎拉取一些变动的数据的时候,它通过主键能够比拟疾速地拿到。

此外还有一系列的索引规约,如上图所示。

规约中提到,索引的建设要有程序,这个程序的思考可能会去关注 where 条件外面有哪些字段,要留神 order by 条件外面字段的程序,这个程序可能要影响索引建设的字段程序,只有它们两个比拟匹配的时候,整个的性能才会比拟好。

另外,如果能够用笼罩索引查问的时候,尽量用笼罩查索引查问,会大大增加效率。

规约中还有一个举荐项:利用提早关联或者子查问优化超多分页场景。这也是咱们在数据库的索引优化外面的教训。当做分页查问的时候,比如说当你翻到了第 1000 页,或者是第 500 页这样靠后的页面时,这时候倡议的做法是,比如说翻页要查出 10 页的内容,最好先把这 10 页内容的主键 ID 先查进去,查出来之后再回表一次,把所有的数据查出来,这是一个比拟常见的举荐做法。

另外索引规约外面还提到一条,就是要留神不同字段类型,尽可能少或者不要产生隐式转换,因为隐式转换会导致整个索引生效。

治理 PolarDB O 引擎(兼容 Oracle 语法):开发标准(2)

SQL 和运维也有许多规约,这里次要讲一下运维方面其中几个点。

首先是数据勘误,开发者如果要去做一些批改数据的话,肯定要先把这些数据查问进去,先看一遍再去做删除,要不然的话很容易呈现误删除。

另外举荐应用数据管理产品 DMS。如果在 DMS 上做数据勘误的话,它有一个益处是能够勾选备份,当做数据勘误的时候,它会主动把所有要勘误的数据全副做一个备份。如果发现数据勘误出了问题的时候,能够找到 DMS 主动备份下来的数据,从新再把这个数据恢复起来。

其余的这些这里不做过多论述,将来会公布在开发者社区和阿里云的文档体系中。

五、PolarDB O 引擎(兼容 Oracle 语法)的开发实际:常见的 SQL 优化

(一)治理 PolarDB O 引擎(兼容 Oracle 语法):SQL 优化案例一 并行查问

当查一些带简单计算的 Query,用并行查问能够大大减速查问效率。

上方是一个简略的例子,在 GROUP BY 的时候有一个非常简单的计算,当这个 Query 要扫描的数据十分多的时候,开一个并行查问能够让耗时从原来的 100 多秒到 10 秒工夫,速度翻了 10 倍,这是用户在应用 PolarDB 的一个小技巧。

(二)治理 PolarDB O 引擎(兼容 Oracle 语法):SQL 优化案例二 抉择适合的 JOIN 形式

咱们反对 hash join,merge join 和 nest-loop join,用户能够依据不同的场景抉择适合的 Join 形式。

能够看到,在下面这个案例中,抉择 nest-loop join 是最快的。

六、案例与认可

(一)残缺的数据库生态

尽管 PolarDB 是一个独自的产品,然而它有十分欠缺的产品生态,包含数据管理 DMS,数据自治服务 DAS,数据传输 DTS,数据库备份 DBS,数据与利用迁徙 ADAM 等,能够满足用户各种场景,带来全方位的服务。

(二)案例:PolarDB 助力 PrestoMall 平滑从 Oracle 迁徙上云

PrestoMall 是一家成立于 2014 年的东南亚电商企业,为了应答业务的快速增长,阿里云数据库 PolarDB 助力 PrestoMall 平滑从 Oracle 迁徙上云。

迁徙上云次要面临以下业务挑战:

  1. 业务疾速倒退,IT 费用也随之水涨船高,Oracle 老本昂扬;
  2. 业务的快速增长,应答双十一大促乏力,利用具备程度扩大的能力,然而数据库弹性有余;
  3. 去 O 复杂度太高,缺乏经验,心愿有业余评估领导;
  4. 最优迁徙老本,管制危险成为难题。

依据客户业务需要,咱们制订了迁徙至 PolarDB O(兼容 Oracle 语法)的计划,起因是:

  1. PolarDB O 引擎(兼容 Oracle 语法)作为云数据库,没有低廉的 license 费用;
  2. PolarDB O 引擎(兼容 Oracle 语法)云原生弹性,解决客户数据库弹性有余的问题;
  3. ADAM 为客户提供业余的数据库 / 利用兼容性评估报告,制订欠缺的迁徙打算;联合 PolarDB O 引擎(兼容 Oracle 语法)对 Oracle 的高兼容性,大幅晋升革新效率;
  4. DTS 实时迁徙 / 回流的性能,配合专家服务,大幅缩短割接工夫并升高危险。

迁徙到 PolarDB O 引擎(兼容 Oracle 语法)后,通过最终实现了以下客户价值:

  1. PolarDB O 引擎(兼容 Oracle 语法)在胜利撑持客户业务的同时,公司整体 IT 老本升高 40%;
  2. 双十二大促 PolarDB O 引擎(兼容 Oracle 语法)弹性降级,应答自若;
  3. ADAM + PolarDB O 引擎(兼容 Oracle 语法)帮忙客户代码革新老本升高 93%;
  4. 在打算内顺利安稳实现割接,业务稳固运行。

(三)被宽泛认可的云原生关系型数据库 PolarDB

目前,PolarDB 在业界受到十分宽泛的认可,顶级学会的论文曾经超过了 10 篇了,取得了往年中国电子学会的科技进步一等奖,还有一些其余权威荣誉。

相干浏览:

删库跑路?别怕!PolarDB-X 轻松援救误删数据的你

阿里 13 篇论文入选数据库顶会 PolarDB 翻新技术架构获认可

上海 ACE 同城会演讲实录 | 云原生分布式数据库 PolarDB-X

PolarDB-X 是如何用 15M 内存跑 1G 的 TPCH

顶会点赞!PolarDB Serverless 实现了哪些冲破?

云原生分布式数据库 PolarDB 技术深度解密

版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0