如何从Oracle迁移到Greenplum 第二篇

本文介绍了从Oracle迁移到Greenplum的过程中,推荐使用ELT策略,详细阐述了元数据迁移、数据迁移的步骤与注意事项,并提供了数据校验的方法,确保迁移的准确性和性能提升。
摘要由CSDN通过智能技术生成


在上周和大家分享的《如何从Oracle迁移到Greenplum 第一篇》中,我们介绍了Greenplum和Oracle的产品对比,迁移效果的几个关键因素。今天我们将在该系列的第二篇内容里,从迁移场景和迁移过程两个方面为大家继续介绍如何从Oracle迁移到Greenplum 。

迁移场景



如下图所示,大部分场景都可以直接迁移到Greenplum,但也有部分场景(如高并发事务型场景)不太适合迁移到目前的Greenplum 5.X版本。

Oracle中应用场景

Oracle中响应时间

迁移到Greenplum建议

分析型场景

1秒以上

此类应用完全可以迁移至Greenplum,迁移后性能会有较明显提升

并发小查询场景

1秒以内

并发小查询场景包括小表全表扫描和大表索引扫描场景,迁移至Greenplum性能在同一量级,但因为数据节点交互,延迟会略有增加  

并发数据加载场景

1秒以内

可以迁移至Greenplum,需要将逐笔插入操作改为微批量插入,由于Greenplum MPP架构优势,加载性能会有较明显提升

低并发事务型场景

1秒以内

可以迁移至Greenplum,需要做适当业务改造,将逐笔操作改为微批量操作

高并发事务型场景

1秒以内

不建议迁移到Greenplum,由于数据跨节点的网络交互和锁的问题,会导致性能有较大的损失,甚至无法满足业务要求。请关注Greenplum的研发进展和新版本特性,Greenplum社区正在不断增强高并发事务型特性。

Oracle到Greenplum迁移场景建议


用ELT替代ETL


ETL做为构建数据仓库的重要一环,承担了数据从OLTP系统到OLAP系统时重要的抽取、转换和加载工作。在银行等金融用户中,一般都是通过在ETL服务器上部署专门的ETL工具(如informatic 或 datastage),将数据抽取到数据仓库中进行复杂分析计算,再将算好的结果推回到OLTP系统以完成在线处理。一般的处理流程如下图所示:


eb2e2856-e1fa-4bb8-9af3-ccedb1bfd7fd.png

数据以T-1的方式加载到Greenplum集群


但受限于ETL服务器的硬件性能,在大数据量的抽取转换时性能较差,随着分布式数据库技术的发展和硬件计算能力的增强,越来越多的用户采用ELT的方式,将ETL中最为耗时的工作放在OLAP系统中完成。这样做,一方面减少了ETL服务器的工作负载,提升了数据的转换效率;另一方面可以利用数据库本身提供的丰富转换函数减少开发的工作量,如下图所示,转换过程可以在数据入库过程中完成,或者在库内完成,从而利用MPP并行的优势,提升转换性能。


7bdec6ed-493a-4b06-9d87-50d1f8458b9e.png


ETL到ELT


对于由Oracle到Greenplum的迁移,我们也推荐使用ELT的方式进行处理,如下图所示:


46844e2e-7fb3-4015-a32e-175769d27fe4.png

使用ELT流程代替ETL



迁移过程



数据平台迁移主要包括元数据迁移、数据迁移、数据校验、应用验证、性能优化等阶段,关于性能优化可以参考最佳实践的文档。接下来主要介绍元数据迁移数据迁移数据校验

一、元数据迁移


Oracle到Greenplum没有现成的迁移工具,可以借助部分自动化转换工具先将Oracle语法转换为PostgreSQL语法,再通过脚本替换,最终转换成Greenplum语法。Oracle到PostgreSQL常用的迁移工具有ora2pg以及 AWS Schema Conversion Tool。ora2pg为命令行工具,只能从Oracle转换到PostgreSQL;而AWS Schema Conversion Tool (简称AWS SCT)是为了方便用户数据上云,由AWS提供的图形化自动转换工具,可以在本地部署安装,安装部署过程简单,能生成详细的分析报告,并且支持多种数据平台的语法转换。根据我们在用户环境的验证,大概可以完成将近70%的语法自动转化工作。

关于AWS SCT安装和使用,可参考如下链接:

https://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/Welcome.html


1) 配置好Oracle和PostgreSQL的URL连接串后,SCT会自动检索并进行分析,生成评估转换报告,如下图所示。从报告可以看出,100%的存储对象(如表、序列、约束)都可以直接进行转换,而存储过程还需要不少工作。

02f69beb-93a2-4e55-b89e-d7254e2b33da.png

数据库存储对象转换评估报告


8474fc6d-56fc-495a-975b-c444694d43bf.png

数据库代码转对象换评估报告


之后,我们点击应用就会在PostgreSQL数据库中创建对应的对象和函数。

 

SCT会自动作类型转换,如果你想了解Oracle和Greenplum中不同数据类型具体的转换方式,可以参考下表:


Oracle

Greenplum

Comment

VARCHAR2(n)

VARCHAR(n)

在Oracle中n代表的是字节数,在Greenplum中n代表的是字符数

CHAR(n)

CHAR(n)

同上

NUMBER(n,m)

NUMERIC(n,m)

number可以转换成numeric,但如果真实业务中数值类型可以用:smallint、 int或bigint等替代,性能会有较大提升

NUMBER(4)

SMALLINT


_

NUMBER(9)

INT


_

NUMBER(18)

BIGINT


_

NUMBER(n)

NUMERIC(n)

如果n>19,可以转换成numerice类型

DATE

TIMESTAMP(0)

Oracle和Greenplum都有日期类似,但Oracle的日期类型会同时保存日期和时间,而Greenplum只保包存日期

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMPTZ

注意:PostgreSQL中TIMESTAMPTZ不等同于Oralce中的TIMESTAMP WITH TIME ZONE

CLOB

TEXT

PostgreSQL中TEXT类型不能超过1GB

BLOB
RAW(n)

BYTEA(1 GB limit)
Large object

在Oracle中BLOB用于存放非结构化的二进制数据类型,BLOB最大可存储128TB,而PostgreSQL中BYTEA类型最大可以存储1GB,如果有更大的存储要求,可以使用Large object类型

Oracle和Greenplum的字段类型映射表


2) 通过pg_dump导出元数据,命令如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值