内容简要:
1. 数据库发展的趋势
2. 传统企业级数据库选型
3. 数据库迁移的最佳实践
4. 数据库迁移至PG整体解决方案
第一部分--数据库的发展趋势
数据库是IT信息技术最基础的一个环节,数据库存在承载了一个企业、一个公司业务系统核心的数据。
1.数据库发展历程
在早期数据库其实仅应用在国防和科学研究院,当时是大型机是在1950年开始的,那个时候的数据库仅是一个层次数据库或网状数据库,远远没有形成现在我们这么多的数据库种类;
再往后到1970年,随着大型商业处理的需要,处理很多大型商业的一些数据,大型商业处理系统的引入了大型商业处理数据库,这个时候的数据库比较早的有oracle和IBM的DB2,是最早的一代关系型数据库,那么这两个关系数据库也一直引用到现在;
到1990年的时候,随着PC机和x86服务器网络的快速发展,数据库也在不断的迭代发展,企业信息化、软件、个人办公、个人娱乐都会使用到数据库,那么这个时候数据库除了原有的关系型数据库库以外,也有了数据仓库用于做历史数据分析,企业数据分析和PC单机数据库用来支撑轻量级的应用、轻量级的软件,让个人更好的办公和娱乐;
到2000年的随着互联网的发展,媒体搜索、社交以及电子商务娱乐的快速发展,对数据库来说是一个百花齐放的是时代,对数据库的需求也比较大,从关系型数据库到数据仓库,从商业数据库到开源数据库,类似于开源这个时候新兴起来的有Mysql、PG、Redis、MongoDB来支撑这些互联网业务和传统企业业务;
到2015年以及到现在,可以称之为是数据库蓬勃发展的一个状态,除了原有的开源数据库、关系型数据库和商业数据库以外,云厂商的发展又涌现出来一大批云数据库,比较知名的有类似于阿里云的PolarDB、分析数据库的ADB、亚玛逊的AmazonRDS、AmazonAurora、AmazonRedshift、微软的AzureSQL等等都是比较流行的数据库,这些数据库和我们各行各业里边所应用到的计算机系统息息相关,我们在研发计算机系统或者在不断的运维发展计算机系统的时候,我们应该怎么样来选择数据库?
3.数据库生产/处理 由量变走向质度(预判)
对数据库的预判,数据库生产和处理,数据将会由量变走向一个质变的过程,为什么说它是量变走向一个质变?
数据库可以把它理解为是存放数据的一个仓库,这个仓库随着存放的数据越来越多,可能没有办法正常的运载,只能寻求走向质变,来更好的来保存、使用所存储的这些数据,预判到底是什么呢?
预计2020年全球数据规模应该会达到40zb,生产处理要求会智能化,为什么要求智能化?
因为随着现在信息技术的快速的发展,收到的数据,80%处理的是非结构化占比的一个数据,生产处理更多的要求实时化,现在的数据有在线分析业务系统和离线分析业务系统,在线分析业务系统其实分析的数据量比较少,到2020年——2022年,预计新业务采用实时分析的比例将会达到55%,原来t+1、t+2、t+3或者t+n的这种离线的业务分系统,没有办法满足现代商业的一个发展,因为商业瞬息万变。如果能更早拿到这种商业的预判,更可以对为我们的公司或者为我们整个业务的决策提供更有力的帮助。
最后一个数据云化,知名分析机构认为在2023年的时候,数据库的云化规模将会达到75%,那么数据库为什么会云化呢?
主要有两个原因,第一个原因是:云,真的能给我们很好的一个弹性扩展能力; 第二个原因是:由传统数据库到云数据库的一个转变,能更好的利用云的一个红利,赋予数据库灵性,让它能更好的来承载现有数据量不断增多,业务不断发展,对数据库要求不断的一个向量变化。
4.数据库系统架构演进
在早期传统开源也好,商业也好,数据库它是一个单机的数据库,由计算节点加本地磁盘形成了一个数据库业务系统来进行服务,单机它使用到的就是我们的CPU和内存加本地磁盘,往后随着单机磁盘容量和单机计算节点的计算资源,没有办法满足现有业务的需要,形成了一个共享的状态,就是共享存储数据库的存储共享的计算节点是多节点,它的优势是易于实现事物的一致性,无需多层复杂管理,那么其优势是怎么实现的?
主要是我们用的是共享存储,我们所并发的事物只要在锁的层次做好之后,那么就可以实现事物的一致性,但是它也有劣势,劣势就是DB节点的扩展能力受限,存储扩展能力及IO性能可能依赖于更多的高端的共享存储。
简单来说,我们在重组共享状态下的架构,DB节点要想横向快速扩展的话,它可能会有节点的限制,而这个限制主要在两方面,第一方面是由于使用的是共享存储,节点越多,共享存储的交互就会越频繁,导致成为一个性能的瓶颈;
第二个是我们在共享状态下要保证两个DB里边的事物,两个DB里各个计算节点的事物和计算节点运行的内容要一致,造成了心跳网络的一个加重。
举个例子,Oracle数据库最常用的是Oracle双节点RAC集群,那么如果是3个节点、4个节点、5个节点、6个节点,Oracle是OK的,当它发展到20个节点,30个节点,这个时候它的clusterware就是一个很大的故障点,一般建议RAC集群不要超过4个节点,超过4个节点的话,我们对运维能力、硬件要求就比较高。
第二劣势是要想达到这么大性能的一个要求,可能会对我们的存储的规格要求比较高。你的存储规格越好,你的IO和共享能力就越高,这是第二个状态。
到云数据库这个状态,云数据库利用云的一个弹性分布式的架构,实现了数据库分布式的引进,分布式数据库它的优势就是它有横向扩展,这是非常便利的,能形成一个线性的横向扩展。 数据库数据是以多副本来存储的,无需共享存储,它的优势就是可以不断的扩展,在需要的情况下,每扩展一个,它的IO、读取,都会呈线性比例的一个增加。
如果是计算存储的能力需要扩展的,那么它的灵活性不会很足,因为这种扩展,需要对应用有侵入,由于其存储是分布式,DB计算节点也是分布式,要求对数据库分库和分表。在分布式查询的时候,分布式事务处理开销要比集中式的状态大很多,由于数据和计算节点都是分布的,必须要有分布式的处理能力才可以。如果分布式处理能力比较弱,那么这个架构就不适合当前业务应用所需要,只有应用在这个架构上做良好的适配和改造,才可以满足。
这两个架构各有劣势、优劣,在选择的时候可以根据能提供的人力和物力来进行最佳选择。
5. Postgre SQL生态的定位
PG数据库作为世界上最强大的一个开源数据库,PG生态的定位是什么?
第一PG的核心能力,PG数据库支持混合负载列式存储,比如说Greenplum,GPU并行加速、向量计算,这是一个优势。
最大特点是包容、开放,PG是支持外部插件的,可以以外部插件的形式开发很多的插件, PG本身包含很多能力。比如说PG对时空、技术、文本是天然支持的,有postgis的插件,有其他第三方公司的插件,PG发展到11、12版本时,其对于机器学习、多维计算图谱、向量模拟等,都有很大的能力来做很多的科学计算。
它还有很重大的商用价值。
第一个特点:
就是PG的licence,很多的商用数据库很是基于PG内核进行开发,比如美国的EnterpriseDB,中国也有很多基于PG内核开发的数据库,由于它的特性,使其成为了传统数据库替换的一个优选目标。
第二个特点:
因为PG数据库能力非常强,更像商业的一个数据库。比如Oracle、DB2在做异构切换的时候,最多推荐的是PG分支相关的数据库,因为My cycle本身对事物、业务能力要求比较高,PG由于它的综合能力比较强,针对这些内容,我们是推荐PG数据库的。
第三个特点:
在云的红利加乘上,它的弹性计算能力是非常强的,比如说在阿里云有RDSPG,PolarDBPG都可以借助云的能力来实现快速的sgin-up、sgin-out的扩展。
在社区这块,因为PG社区本身是非常强大的,有全球的社区,所以这块有一个非常大的特性——兼容Oracle, Oracle数据库是全球第一大商用数据库也是用户最多的数据库。
近年来Oracle数据库的地位一直在不断的受到挑战,最主要的原因就是 Oracle数据库本身比较贵,也比较成熟,但其实我们并没有真正的用到所有的Oracle数据库的feature。
为了降低成本,同时增加效率,我们会选择其他的数据库进行替代,例如PG,因为PG本身有很多兼容Oracle的一些feature,是可以快速的实现传统数据库和应用到 PG数据库应用的一个快速切换,就是PostgreSQL整个生态的一个定位。
第二部分--传统企业级数据库的选型
1.早期传统企业级数据库选型
为什么说是传统企业级数据库的选型呢?
其实在传统企业数据库的选型很早就有定论,在早期传统企业数据库在使用的时候的三大件:Oracle、SQLserver和DB2任选其一保证是没有问题的,那个时候数据库的能力这三家是最大,而且在开发的过程中,我们只要用到了这三大件,基本上不用考虑数据库额外的架构需求,因为这三种商业数据库已经帮我们定义好了,但是它也有一个弱势,就是闭源可扩展性,针对于现在的开源数据库和语音数据库来说比较弱,如果传统的企业数据库的it信息系统,向新的信息系统的架构演变,会遇到数据库的瓶颈,主要是横向扩展、纵向扩展。
传统企业客户IT现状
怎么样把传统的数据库替换到新的数据库架构?
传统企业的数据库客户IT的现状:
传统企业数据库首先它肯定是IDC它会有一个成本,这个成本就是我们实际运维的数据库,它都有哪些?我们也做了一个列举,比如说数据库补丁及升级、应用补丁及升级、故障停工性能调整、持续的it负担、网络维护与升级等等,都是我们it传统企业面临的成本。
传统企业的成本总结为三点,第一点就是无法满足现有企业的快速部署,因为传统企业部署就拿数据库来说部署一套数据库,首先要购买硬件、安装操作系统、购买软件、安装数据库操作系统再来部署;
第二点是弹性拓展能力不足,弹性拓展能力不足导致企业每年在做成本规划的时候,必须要考虑到企业最高峰的时候所需要的计算资源。一般来说一家企业它的业务高峰应该是在固定的时间段或在一段时间里边,不会全年都是业务高峰,为了满足这个高峰点,必须要准备高峰值所预估到的硬件,低于硬件的话,是没办法正常运行的;
第三点就是老旧的系统建设导致资源被大量的浪费,很多老旧的系统它依然存在,但是它的存在的已经不是核心系统,却依然要维护,由于维护的成本导致我们现在的基层资源比较浪费,这是整个传统企业IT的一个现状。
3.全球云数据库市场格局
我们可以把它理解为全球数据库市场的格局。在Gartner分析象限里面,2019年国内阿里巴巴营收已经排到了第三位,在亚马逊和微软之后,2019年的Gartner数据库魔力象限里,阿里云也是国内唯一一家数据库公司进入到了挑战者象限。
中国IDC的报告中看到,阿里云的市场份额首次超过了Oracle市场,排在了中国数据库市场的第一位。当然数据库市场份额是云数据库加传统IDC部署的这种模式,如果单单只是传统的IDC部署的模式的话,还是oracle数据库老大,因为毕竟他是Number one的商业数据库。从这分析报告里可以看,数据库在不断的往云的方向进行发展,这是一个趋势。
4.市场洞察与研判:Oracle(One world Conference)
传统的数据库未来会是两个方向,第一个方向,云数据库,比如说云上的各种数据库服务;第二个方向,可以把云部署到我们的机房,就是我们自己做专有云,或者是私有云。 私有云和公共云的能力基本是一致的,来为我们提供更好的云数据库服务。
5.阿里云数据库的特色
云数据库的特色(以阿里云数据库为标准),基本归结为四大特点:
第一点:开箱即用。
不需要做任何操作,不需要做任何硬件准备,只要在云服务上进行购买就可以自动使用;
第二点:更快。
一般来说,传统的数据库在使用的时候是需要有一个DB来进行运维的,来帮我们数据库运行更快。使用云数据库本身云平台就会对内核和参数有很好的优化,来保证我们所购买的数据库是非常快的,同时有云的快速弹性拓展能力;
第三点:更稳。
在云上会保证云数据库的可用性。云数据库本身对于硬件来说,有一个稳定的硬件选型和压测,不需要对硬件来进行考虑。
第四点:更安全。
传统企业数据库里,我们都要求数据库是要有备份的,没有备份肯定是不对的,云数据库是有很多的备份手段和审计手段,以及很多传输的加密手段来帮助我们。就拿阿里云数据库来说,阿里云数据库它有多种类型,包括PGMySQL开源类型在内的也有很多商业的、阿里云资源的数据库,比如说PolarDB、ADB等等,这些数据库都是可以使用的。
阿里云里有中国最强大的数据库研发团队,提供了丰富的数据库选型,100%进入生态,客户无需更改业务,如果我们是使用PG的话,是可以100%迁移到阿里云上面的,所有的内核都是经过了双11高并发和稳定性考验的。双11高并发和稳定性考验不只是阿里内部的生态,阿里外部也有很多历经双11的企业在使用阿里云的数据库,也是经历了考验的。
6.传统企业数据库迁移(Oracle)
数据库迁移为什么比较难?
数据库迁移它不仅仅是把一个数据库里面的数据迁移到另一种数据库里面的数据那么简单,它还要考虑到数据库迁移之后,原有的应用是否能在现有的数据库里边更好的来使用。这个问题要考虑到不同数据库之间它可能会所有对象结构不兼容、SQL不兼容、架构不稳定。
那么怎么样能快速的做到或者是有一个标准化的产品能做到?
阿里云推出了一个数据库迁移的一个方法论和工具集,来帮助我们来快速的进行迁移。
这个方法论就是借助阿里云数据库应用迁移和分析产品,来快速的帮我们做传统企业数据库,类似于Oracle、DB2做一个业务调研和可行性评估。业务调研和可行性评估以自动化能力分析我们原有的数据库有哪些特性,在目标数据库里面是否支持,还会给我们一个可迁移的可行性报告,我们根据可行性报告有一个poc验证,poc验证完了之后,就可以做选型决策。
选型决策完成我们适配改造数据迁移、测试迁移、隔接上线,上线之后护航保障方案沉淀,整个的一个标准化的一个体系,来帮助我们快速的把传统数据库到目标数据库做一个选型。
目标数据库可能是OLTP场景,也可能是混合场景,也可能是一个OLAP场景,我们在阿里云上都对应的数据库,那么针对开源来说,我们有对应的数据库,比如说阿里云上有RDS-PG,我们可以来进行选择,那么在阿里云自研有PolarDB PG,也是支持PG的,在所有的解决方案里是支持公共云、专有云和混合云的。
这套工具方法论我们和中国信通院联合多家数据库厂商也做了分析,我们联合做出来一个数据库及应用迁移指南,整个操作阿里云也有原厂服务和合作伙伴服务,来支撑我们快速的完成整个的一个沉淀度的迁移。
7.企业级数据库PG选型
对比企业级的应用,在PG这块有哪些选型?
PG可以把它简单分成两个分支:
第一个分支是:关系型数据库,就是开源的PG;
第二个分支是:分析型数据库,分析数据库比较流行的或者是大家比较熟知的Greenplum是基于PG来进行研发,可以提供大数据并行处理的能力,可以把它构建成一个很好的数据仓库。
还有其他商业数据库,也是支持PG的,比如说阿里云的PolarDB-PG、ADB-PG、 RDS-PG都是原生百分百兼容PG的,那么其他还有EnterPriseDB或者是其他商业性数据库都是可以的。那么针对PG生态,我们在做传统企业数据库选型的时候,完全可以借助PG这些分支来替换现有的数据库和现有的技术架构。它首先能帮助我们降低成本,因为Oracle、DB2、SQLServer它们的成本相对来说是比较高的,如果我们把一个商业的数据库用开源的数据库替代的话,这个成本来说是巨大的,我们的收获是比较高的。
8.ORACLE数字化迁移方案的“四步法”
整个的选型,我们把它分成“四步法”,以oracle为例,更简练来说,就是评估、决策、实施、优化:通过自动化工具来评估,评估完成之后,根据报告来进行决策,决策完成之后,就可以组建团队,组建方案来进行实施了。
整个的 Oracle的迁移“四步法”,可以把它理解为三件套的工具:ADAM+POLOARDB+DTS三件套
目标数据库的选择,就是POLARDB, POLARDB是阿里云自主研发的通用关系型数据库,100%兼容MySQL、PG数据库更高度兼容ORACLE语法,这个是我们数据库的一个能力。它是基于分布式架构的,它和普通PC服务器提供商用数据库的能力相当,但是成本只有10%,具备高性能、高可用性、高可耗,高耐用、高安全、高应用性,这都是PolarDB可提供的能力。
9.PolarDB架构的优势
第一大优势:智能代理
能提供自动读写分离的能力,它是一个主节点,多个从节点,它有智能读写自动分离的能力,可以自动化的把写SQL路由到主节点上,只读SQL路由到只读节点上,不需要我们做任何应用改造,在路由的时候它有一个负载均衡,会平均的把这些读业务分配到各个词组节点上。
第二大优势:计算节点
计算节点是存储与计算是分离的,在计算节点有两个保证,第一个是一写多读支持很好的一个线性扩展,这个线性扩展按量按需扩展的,当我们在业务量比较大的时候,我们就可以进行扩展。当我们业务量不是很大的时候,我们就可以缩回来,降低配置,就是按量付费。
怎么样能保证主节点和备节点数据读写是一致的呢?有一个物理日志能实现把主节点更新的数据快速的同步到重节点上面。
第三大优势:存储节点
用的是多副本的分布式存储,来保证整个数据是一致性的。存储和计算节点我们用的是RDMA网络,是非常快速的。
10.PolarDB Box一体机
快速的把PolarDB Box一体机带到我们的机房里面,有三大优势:
第一大优势是:兼容。
高度兼容Oracle语法,降低我们高达95%迁移人力,1000+项兼容性涵盖特色,我们有一个数据库的开发手册;
第二大优势是:易用。
就相当于你把阿里云的PolarDB搬到了我们的机房,实现了开箱即用,在阿里云上怎么操作PolarDB,在机房就怎么操作PolarDB;
第三大优势是:创新。
在PolarDB上增加了Ganos插件,它可以支持我们5G+IoT全新SQL查询,专用于数据定位,能实现人、时、地、物、事件综合的一个处理。在10亿级数据查询,查询“十万位点+事件”信息的时候实现达到秒回。这个能力已经运用到很多企业地图,比如说像恒力中恒、高德都在使用。
11.PolarDB-PG提供完整的生态工具
l 第一个生态工具是DMS可以支持数据开发、数据管理、数据安全;
l 第二个生态工具是cloudDBA能实现自动化的监控运维;
l 第三个生态工具是DTS能快速的做数据全量迁移;
l 第四个生态工具是DBS是做数据备份的;
l 第五个生态工具DAS和DMS是数据安全的考虑。在dms上也有一个数据审核、数据脱敏、SQL注入检查的一个能力;
l 第六个生态工具DAS数据自治管理,可以自动优化SQL,自动SQL限流,根据数据库的复杂来弹性伸缩。这是整个PG生态。
第三部分--最佳实践
1.ORACLE架构迁移标准化解决方案
我们把传统的数据库以Oracle为代表分为两类,前一类是已有业务,对事物是强制性的,存在很多表的撞演和复杂的SQL,这个时候迁移,如果我们使用的oracle特性比较少的话,只是用了关系型数据库特性,推荐直接签到PT上面;
如果我们用到的oracle特性比较多,可以选择阿里云的PolarDB PG、PolarDB Oracle兼容板来实现快速的迁移,因为它本身对oracle做了很多的兼容,PolarDB还有一个特色,就是它的单库支持100TB。
如果超过100TB的话,我们有两个解决方案:
第一个解决方案是可以把这些历史数据放到外部表里,外部表存放的位置OSS存储,这个是非常廉价的;
第二个解决方案是可以专门构建ADB for PostgreSQL的数据仓库,这个数据仓库可以快速的实现实时数据处理。它可以直接实时的把PolarDB PG或者PostgreSQL里边的数据实时同步到ADB里边,如果我们要做业务分析的话,实时传回来。
当然了我们也可以选择新的分布式架构,这个业务可能是我们新业务要重构,或者是它的事物比较弱,没有状态的架构也需要分布,可以选择阿里云的RDS PG加分布式服务来实现一个全分布式的架构。
这是我们提供的 Oracle架构前移的一个标准化的解决方案。
2.数据库迁移至PG整体解决方案
混合性的场景,就是存量业务迁移强事务一致,有多表JOIN,有GIS地理信息,还有一些分析型的内容。这里还是以oracle为例,如果我们用到的oracle特性比较强,我们叫强o特性,我们可以选快速迁移的话,可以直接迁移到POLARDB(Oracle兼容板)上面。
如果是弱o特性的话,对性能要求不是很高的话,我们可以迁移到RDS PG上面,但是如果我们对性能要求比较高,需要有很强的动态扩展能力的话,我们建议是迁移到POLARDB PostgreSQL数据库上面。如果数据量比较巨大的话,用外部表或者是直接构建一个数据仓库。
针对于OLTP场景,如果这个业务是新业务重构,事物要求不是很强,是弱事物的,而且很多表它是无状态的架构,也可以很好的支持分库分表,但是它要求有无限的扩展能力,那么这个时候建议迁移到PolarDB-PG和RDS PG,但是 PG可能根据我们的业务量发展,我们有分表需求的话,我们也可以在上面加分布式数据库的服务。
最后由于它的分布式业务,做OLAP是不行的。如果我们需要做OLAP类的业务场景,建议单独的构建数据仓库,来为我们提供实时的数据分析。
很多业界科学家认为未来是从BIGDATA转向FASTDATA,未来大数据和现在大数据是有一些不一样的。现在的大数据虽然也是大数据,但是它在分析数据时可能存在一个时间差,而这个时间差会对我们的业务产生一点点影响;比如说如果是一个实时分析我们可以马上定位、决策,一个公司的商业能力,要是有时间差存在,可能会产生影响。FASTDATA就是实时传输、实时分析给予我们一个实施回馈,只要分析模型OK,就能做出一个正确的选择。这就是我们对未来大数据的研判。