如何从Oracle迁移到Greenplum 第一篇



众所周知,基础数据平台的迁移非常复杂。今天起,我们将陆续为大家推送系列干货内容——《如何从Oracle迁移到Greenplum》,详细介绍产品对比,迁移场景,迁移步骤,以及一些特殊场景的注意点,手把手教大家做迁移。从传统的单机数据库迁移到分布式数据库,这些原则也仍然适用,很多用户都成功的从Oracle、Teradata、DB2、Sybase IQ、Hadoop等平台迁移到了Greenplum。


 1

综述


基础数据平台的迁移是一个非常复杂的过程,涉及到业务的重新定义和应用的改造,如果不能针对产品特性,合理的规划实施,很有可能导致迁移项目失败,浪费人力和财力,在实际项目中接触到多个用户从不同数据平台迁移到Greenplum,其中既有老牌数据仓库如Teradata,也有传统关系型数据库(如Oracle、DB2、Sybase IQ等),还有一些Hadoop平台。它们之所以迁移到Greenplum,主要有三方面的原因:

1)成本

Greenplum 相比Teradata、Oracle Exadata等一体机设备,不需要够买专有硬件设备,有明显的成本优势。


2)性能

Greenplum 相比传统关系型数据库有明显的性能提升,多个用户从Oracle、DB2迁移到Greenplum后,性能有几十倍的提升


3)易用性

Greenplum 相比Hadoop平台,SQL表达能力更为突出,应用改造成本要小很多


Greenplum在网络层面做了特殊的优化,用UDPIFC协议代替TCP做为内部数据交互的协议,UDPIFC全称User Datagram Protocol Interconnect with flow control,是Greenplum为了提升数据通信的性能和通信的可靠性,在传统UDP通信协议的基础上实现了可靠的通信并实现了流控和防阻塞机制,本质上是一种RUDP协议(Reliable UDP)。理论上单集群规模可以达到1000个节点以上,国内现在有不少用户集群规模超过一百台,压缩后数据规模达到几PB;从扩展性上来说,Hadoop(1000个节点以上)>MPP(100~1000个节点)>Oracle RAC(32个节点以内),从SQL兼容性上来说:Oracle RAC和Greenplum底层都采用传统的关系型数据库,Greenplum底层基于Postgresql,与Oracle语法兼容性非常高,虽然近年来SQL On Hadoop的技术不断发展,但在SQL兼容性和性能(尤其是复杂业务场景下的复杂SQL)上相比传统的MPP关系型数据库,还有不小的差距。


如下图所示,目前除了几大互联网公司,绝大部分企业里的数据量多在TB到PB级之间,MPP类数据库和Oracle RAC产品仍然是OLAP领域的主要产品,由于Oracle Exadata一体机高昂的硬件成本和扩展性等问题,越来越多的用户把Greenplum当作数据仓库的首选平台,并从Oracle RAC 等数据平台迁移到了Greenplum,接下来的章节会重点介绍下如何从Oracle迁移到Greenplum。


产品名称

集群规模

数据量

Oracle  RAC

32节点以内

TB级

Greenplum

1000节点以内

PB级

Hadoop

1000节点以上

EB级

产品支撑数据规模对比


2

产品体系架构对比


Oracle数据库从1979年发布第一个版本至今已有将近40年的历史,在OLTP领域仍然处于领导地位,近些年,随着互联网、社交网络、物联网的兴起,越来越多的企业开始使用MySQL和PostgreSQL等开源数据库,但Oracle在传统的企业市场仍然有庞大的用户规模,短期内很难被替换掉;在OLAP领域,Oracle自2001年首次发布其RAC产品,到现在有将近20年的历史,产品已经稳定成熟。但由于其本身基于共享存储的架构和限制,在数据规模比较大时,如节点数超过32个,数据量超过50TB时,使用RAC就会有点力不从心。即使使用Oracle Exadata 一体机部署RAC,扩展性和性能也会触及到天花板,并且要投入高昂的硬件和软件成本。


如下图所示,Oracle RAC 是典型share everything的架构, 即所有数据文件,控制文件,SPFILE和重做日志文件都必须驻留在支持群集的共享磁盘上,以便所有群集数据库实例都可以访问这些存储组件。由于Oracle RAC数据库使用share everything体系结构,Oracle RAC需要用集群感知存储,而集中化存储往往成为性能的主要瓶颈点。


080b89f2-671f-4ef5-9970-6319be0bf448.png

Oracle RAC典型应用场景架构


关于Oracle RAC主要应用场景是在OLAP还是OLTP,网上有不少讨论。官方的说法是两者都可以,但从实际的应用来看,主要应用场景还是在OLAP领域,RAC用在OLTP领域并不能降低单个事务的响应时间,一般通过应用水平拆分,将不同的应用分散在不同的实例,以降低对全局锁的争用,从而实现水平扩展,提升整体的吞吐能力。在OLAP领域,本来数据就要共享,很难做业务上的拆分,这样可以使用 Oracle并行计算的能力,既可以节点内并行,也可以跨节点并行,从而提升在OLAP的计算能力,但由于OLAP和OLTP本身业务的侧重点不同,在技术实现上也会有较大差别,如下图所示:


7b204e08-6563-4f9c-8c17-a1054e7caf16.png

OLTP与OLAP比较

(来源:https://www.cnblogs.com/andy6/p/6011959.html)


OLTP场景一般是高并发低时延,OLAP一般为低并发吞吐量大,在产品层面,往往有些参数也需要根据相应的场景进行调整,但参数方面的调整有些是相互矛盾的,这也给一套RAC解决OLAP和OLTP带来了不小程度的挑战,虽然可以通过Instance Caging 、数据库资源管理器、并行语句队列、IO资源管理器等手段对系统资源的使用进行控制,但需要投入较大的精力进行整合优化,也做不到完全的资源隔离,还是会存在大的OLAP场景影响OLTP应用的情况。但如果用户数据量不大,比如在10TB以内,并且应用上有明显的分时特点,比如白天跑OLTP,晚上跑OLAP,使用RAC也是不错的选择。


关于RAC 更适合跑OLAP还是OLTP应用,可以参考itpub上的2008年的一篇讨论:http://www.itpub.net/thread-1089050-1-1.html,里面有淘宝老一代DBA的精彩分析,现在读来还十分具有参考意义。


而Greenplum是Shared nothing的架构,数据量和计算能力可以随着物理节点数的增加呈类线型的增长,不会因为存储的瓶颈造成整个集群的扩展和性能问题,所以更适合大数据量的分析型场景,如果有基于索引并发小查询场景,Greenplum也可以很好的支撑,在5.0版本之后,通过Resource Group对物理资源做了更细粒度的控制,在CPU、内存、并发控制等方面都做了较大的改进。另外社区版本已经将heap表上update和delete操作原先的表锁机制降为行锁,并增加了在分布式环境死锁的检测机制,增加了复制表,在后续发布的版本中,随着和PostgreSQL的不断整合,会对事务型操作有更进一步的增强,对HTAP类的场景会有更好的支撑。


目前有不少用户从Oracle迁移到了Greenplum。下面我们来分析一下主要原因。


Oracle的主要痛点
Oracle主要有以下几方面痛点:

  • 在应对海量数据的分析型场景时性能较差

Oracle并不是专门为分析型场景设计,其体系架构主要是应对数据经常变动的OLTP高并发,低时延场景。

 
  •  扩展性较差

当Oracle性能不能满足分析要求时,一般通过垂直扩展的方式,增加单台机器硬件的配置提升性能,但受限于硬件的性能瓶颈,很容易达到硬件性能的天花板,即使可以通过Oracle RAC的方式进行一定程度的水平扩展,但其基于共享存储的架构,限制了其水平扩展的能力。
 
  • 在分析型场景中,体系架构较老,在性能和功能上无法完全满足新型的分析场景,如深度学习和流式计算场景。

 
  • 软件使用授权费用昂贵,Oracle用户需要为高级的特性支付额外的使用费用。


Greenplum的产品优势


  • 原生的shared nothing MPP架构

当单台机器无法满足性能要求时,可以通过增加机器的方式方式进行水平扩展,理论上可以支持上千个节点以上的集群规模,在真实的生产环境,我们国内有多个用户其集群规模超过100节点,国外有超过200节点,压缩后的数据量达到PB级别。

 

  • 优秀的查询性能

其分析性能随着节点的增加呈类线型增长,一般在Oracle上跑数小时的分析型应用,在Greenplum上只用数分钟或者秒级别返回。

 

  • 支持多种场景

在支持传统BI分析型应用的基础上,同时支持机器学习、图计算、全文检索、地理位置分析等场景,无需为这些高级特性支持额外的授权费用。

 

  •  产品生命力强

产品开源,完全基于PostgreSQL生态。

 

  • 无硬件绑定

100%纯软件产品,用户可以自由选择硬件搭配,可以跑在各种云化环境或私有数据中心中。

 

  • 总成本低

不需要昂贵的专有设备和服务。


下图给出了Oracle RAC/Exadata和Greenplum的比较。

对比分类

Oracle RAC/Exadata

Greenplum

体系架构

Shared storage

Shared Nothing

优势场景

OLTP

OLAP

硬件搭配

SAN存储+光纤网络

本地磁盘+以太网

扩展能力

理论上可以到100个节点,生产上一般在2~10个,虽然所有节点可以同时读写,一般通过应用层sharding扩展其写的能力,读取能力可以水平扩展

生产上多在32节点以上,超过100节点以上的有多个用户,理论上可以支撑3000个以上物理节点

典型扩展方式

Scale up

Scale out

库内编程能力

支持PL/SQL库内过程语言和自定义函数,如果要使用R语言等其他分析语言,需要购买额外的高级分析特性

支持PL/pgSQL等过程语言,集成Apache MADlib(机器学习、Apache Solr(全文检索、PostGIS(地理空间分析、Python、JAVA、Perl、MapReduce计算框架和其他分析Lib库,如Tensorflow,通过PXF、Spark connector、kafka connector可以方便与Hadoop生态集成

云上部署

支持AWS等但相比Oracle自家的云产品需要支付更高的授权费用

支持多云化部署,可以无差异部署在AWS、GCP、Azure、阿里云、腾讯云等公有云环境,也可以选择部署在企业私有云环境当中、有专门的Greenplum for Kubernetes版本

开源策略

纯商业产品,完全闭源

100%开源,集成原生PostgreSQL生态

软件开发效率

开发周期较长

小版本1个月发布一次,大版本一年,2019年发布基于PostgreSQL9.x版本的Geenplum产品

数据格式扩展

支持半结构化数据

支持Json、Hstore等半结构化数据

Greenplum与Oracle RAC主要维度对比


如何从Oracle迁移到Greenplum


 

如下图所示,从Oracle迁移到Greenplum一般要经过规划->安装部署->实施->UAT验证->投产五个阶段, 中间涉及数据库厂商、应用开发商、用户等多个部门和组织的配合,为了保证迁移项目的成功,每一个环节都要仔细分析并充分验证。迁移效果的几个关键因素的影响。

 

a5f8a195-1ef4-4321-ac00-7a4776ebcd46.png

迁移流程


1. 硬件选择

目前市面上主流的x86服务器,都可以作为Greenplum的生产运行环境,下面通过几个实例说明硬件选择中需要注意的问题。


  • RAID卡没有硬件cache

某用户在Greenplum扩容时,新加机器选取了更多磁盘的机器,但新加机器RAID卡无硬件cache,导致新加机器写IO能力只有300MB/s,扩容后性能反而变差。

建议:选用2GB或以上cache的硬件RAID卡。

 

  • 选用千兆网络

为了硬件利旧,客户用千兆网络环境构建Greenplum集群,结果四台机器的性能反而不如一台。

建议:使用万兆网络环境搭建Greenplum集群。

 

  • 服务器重启后,网卡降为百兆

某用户开启了交换机与网卡自动协商,服务器故障重启后,网卡由万兆降为百兆,集群性能下降严重。

建议:禁止网卡自动协商,强制为万兆模式。


  • 交换机屏蔽指定UDP端口

多个用户都遇到过交换机屏蔽指定UDP端口,导致SQL执行过程中 Hang死或者超时的情况出现。

建议:交换机允许UDP通信,操作系统层面屏蔽指定UDP端口。


2. 集群构建

Greenplum通过多实例的方式实现并行化,一般primary segment实例数选择为4~8个,现有2u*12core以上的服务器建议可采用每台服务器8个primary实例的方式进行构建。

 

我们将在下篇内容中从 迁移场景、迁移过程、特殊场景三个方面简单介绍如何从Oracle迁移到Greenplum。


本文摘录自Greenplum官方教材《Greenplum:从大数据战略到实现》,点击阅读原文获取购买链接。


819de567-4d18-4663-8cd9-c40b95430fdc.png


本文分享自微信公众号 - Greenplum中文社区(GreenplumCommunity)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值