Teradata迁移Greenplum可行性分析
来源于:https://blog.csdn.net/littlegirll/article/details/132707714
- Teradata迁移Greenplum可行性分析
- 概述
Teradata和Greenplum都属于MPP数据库,熟悉Teradata的用户可以快速掌握Greenplum。同时,两者的语法非常接近、生态系统高度重合,这也极大地降低了迁移的难度和过程。另外一方面,Greenplum相比Teradata更加开放,产品基于PostgreSQL完全开源,不需要专有硬件,大大降低了数据仓库构建的软硬件成本。
从软件架构上看,Teradata同样采用无共享(Shared Nothing)大规模并行处理( MPP)架构。主要包括解析引擎(Parsing Engine,PE)、计算引擎 (Access Module Processor,AMP)、消息通信层 (Bynet)三个模块。其中PE模块相当于Greenplum的 master节点,负责处理用户连接、SQL的解析、分发和最终查询结果的输出;AMP模块 相当于Greenplum 的segment节点,负责具体数据的计算工作;Bynet模块相当于Greenplum的interconnect部分,负责整个网络的通信和数据在不同节点的传输。此外,VDisk相当于Greenplum segment节点的本地存储。可见,Teradata在架构上和Greenplum基本一致,主要区别是在其对应的硬件部分,如Bynet是专门的硬件网络设备,VDisk部分对应的底层存储一般是通过共享存储划分逻辑单元号(LUN)的方式实现。
因为Greenplum和Teradata在架构上相似,且都支持ANSI SQL标准,因此两个产品中大量语句的语法都一致或者高度相似,即使有不一样的语法或者概念,也能在另一个产品中找到对应的语法或者概念。例如,对于create table命令,两者的语法基本一样;如果创建表时划分分区,两者都使用partition by。但对于数据分布的控制,Teradata使用primary index, 而Greenplum使用distributed by。对于大多数Teradata特有的概念和语法,迁移到Greenplum时可以忽略,极个别的情形下需要加以改写。
Greenplum和Teradata在工具链和生态系统上也存在着许多相似性。如下表所示,Teradata中常用的库和工具在Greenplum都有对应的使用方式和工具。所有常见的BI工具都同时内置支持Teradata和Greenplum。所以,使用商业智能(BI)工具的用户在迁移后依然可以使用自己熟悉的工具。
类型 |
Teradata |
Greenplum |
迁移说明 |
ODBC/JDBC |
支持 |
支持 |
_ |
BI前端展现 工具 |
支持所有BI前端工具 |
支持所有BI前端工具 |
通过ODBC或JDBC标准访问DW,改动量很小或没有; |
LOAD工具 |
fastload/ multiload/ tpump等 |
外部表导入、COPY等工具 |
采用工具对ETL脚本使用到的部分 |
UNLOAD工具 |
fastexport等 |
外部表导出、COPY等工具 |
采用工具对ETL脚本使用到的部分 |
命令执行 客户端 |
BTEQ |
PSQL |
采用工具对ETL脚本使用到的部分 |
SQL- DML语法 |
支持ANSI SQL |
支持ANSI SQL |
Greenplum和Teradata的语法基本相同。Teradata有少量特殊语法或函数(如事务BT/ET、OLAP的csum,rank、qualify等、函数如char),Greenplum都有相对应的甚至更强大的函数,只是需要修改SQL中的语法。工作量不大 |
SQL- 语法DDL |
使用PRIMARY INDEX、PPI等 |
使用Distribution分布数据,使用partition做表分区 |
DDL语法基本相同。需要将Teradata的PRIMARY INDEX改成Distribution key,PPI改成表分区 |
备份与恢复 |
采用NETVULT+archive工具 |
CRONTAB调度器+ gpbackup/ gprestore |
实现数据库的自动备份 |
系统监控等管理工具 |
Teradata MANAGE |
Greenplum Command Center |
_ |
- 迁移流程
Teradata迁移至Greenplum的总体流程如下图所示,主要分为历史数据迁移、日常加工流程迁移、应用接口迁移及管理工具迁移几个阶段。
1. 历史数据迁移
该阶段包括如下步骤:
在Teradata数据库中,按规定分隔符及字符编码将历史数据导成文本文件,存放于Greenplum数据库网络相通的ETL服务器本地磁盘或所连NAS上,确保Greenplum数据库通过gpfidst协议的外部表能读取数据文件。从Teradata导出DDL脚本,按照Greenplum语法批量修改脚本,确保在Greenplum中能成功创建所有用户表。
2. 日常加工流程迁移
该阶段将ETL查询加工语句按Greenplum的DML语法进行转换,并根据Teradata与Greenplum函数对照表替换相关函数,转换ETL连接数据库方式。重新配置加工作业,历史数据迁移成功后,启动日常ETL作业。
3. 应用接口迁移
在该阶段,由于Greenplum数据库支持ODBC/JDBC,商业智能前端展现等工具可通过ODBC或JDBC标准访问数据仓库,改动网络连接IP等即可。
4. 管理工具部署
该阶段包括以下步骤:
部署Greenplum备份及恢复工具,定期备份数据及定期进行恢复演练。
部署相关管理工具,如Greenplum Command Center。
在上述各个阶段中,涉及到的主要迁移任务如下表所示。以下为各阶段的主要工作。
迁移任务 |
任务简述 |
数据卸载 |
从Teradata卸载抽取历史数据 |
DDL导出 |
从Teradata导出表DDL脚本 |
DDL脚本转换迁移 |
按Greenplum语法对Teradata版DDL(包括表,索引,视图)脚本进行转换 |
数据加载 |
选择Greenplum数据加载方式,如外部表或者copy工具,准备加载脚本,进而进行数据加载 |
ETL工具脚本转换迁移 |
建立Greenplum到ETL服务器的网络连接,对数据加工模块脚本按Greenplum语法进行局部修改,查询语句转换及存储过程转换等 |
查询语句转换迁移 |
按Greenplum语法规则及特性修改转换及优化查询语句 |
存储过程转换迁移 |
按Greenplum语法规则及特性修改转换及优化Teradata及用户自定义函数,存储过程等 |
资源负载管理迁移 |
根据Teradata资源负载管理确定Greenplum用户及资源组或者资源队列 |
安全及权限管理迁移 |
迁移用户及组等角色的访问权限及数据库对象权限 |
BI工具接口迁移 |
建立Greenplum到BI前端应用连接 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)