GBASE南大通用-TeraData迁移GBase 8a PoC实践

2023-12-28 11:28

本文主要是介绍GBASE南大通用-TeraData迁移GBase 8a PoC实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库迁移,考察的是数据库厂商的配套工具、方法论、实施经验,不仅仅要求转换成功率高,转换效率高,也要求转换后可执行,执行结果要准确。近几年,GBase完成了100+用户TeraData等国外数据库替换迁移,积累了多个项目的迁移经验,以转换高、精、准而收到合作伙伴或厂商的好评。

以2022年某金融用户的POC测试为例:转换内容包括DDL、视图、批量Perl脚本,转换的数量在PoC中也是算是偏多的,包括600多个DDL、视图,超过100个Perl脚本。最终转换成功率、转换成功率均考核达标,DDL、视图转换成功率达到99% ,Perl脚本的转换成功率要求达到85%,且即转即用,不能做任何修改,转完即跑,跑则能对。这种转即用的迁移,做过数据库迁移的厂商都知道这意味的什么,那种靠铺众多人力手动迁移的情况不能也不会发生在Teradata到GBase 8a迁移产品上。

数据库系统迁移,包括如下的几部分核心工作,从Teradata到GBase 8a的迁移也遵循此规则,主要步骤按照先后次序为:

  • 从Teradata按照要求导出数据,导出要求数据的列分隔符、包围符、空串与NULL值的区分、字符集等指标要提前规划;

  • 从Teradata数据库对象的导出,包括DDL、视图、函数等;

  • 客制化GBase 8a的迁移工具,最大化覆盖贴合于客户特点的编写语法写作特点,最大化的提升转换成功率,客制化时间可控制在3天到5天内完成。

  • 在GBase侧建立数据库对象;

  • 根据Perl脚本中的SQL语句,使用工具来重建数据分布键值,默认采用原Teradata中的index作为分布键;

  • 导入GBase 8a从Teradata落地后的文本文件,并注意左空格的保留,注意日期的存储格式,注意大小写不敏感等信息;

  • 迁移Perl脚本到GBase 8a;

  • 迁移后处理结果Teradata于GBase 8a结果比对;

  • 迁移到GBase 8a后性能极致性优化;

  • Teradata于GBase 8a的并行运行,确保稳定、数据无误;

  • 正式切换到GBase 8a,完成数据库系统的迁移;

在本次的POC中,由于GBase 8a与Teradata的高度兼容性,涉及到迁移内容不多,如下面两个部分的罗列,这些迁移都通过工具自动完成,迁移成功后,可直接运行。

01 DDL、视图迁移

该部分迁移,主要包括表类型关键字的处理,字段类型的处理,字段约束、字符集的处理、以及Teradata其他DDL特殊数据处理内容,具体为:

表类型:CREATE [MULTI]SET TABLE直接改为CREATE TABLE,CREATE GLOBAL TEMPORARY TABLE改为GBase的物理表,CREATE VOLATILE TABLE 是SESSION级临时表,改为GBase TEMPORARY表;

常见数据类型:99%可以通用,cHAR、VARCHAR、DATETIME、DATE、TIME、TIMESTAMP、DECIMAL、INT等;

字符集:迁移成统一的字符集,可以是GBK、UTF8等GBase支持的字符集,包括GBK、UTF8、UTF8MB4、GB18030等;

大小写不敏感:关键字UPPERCASE、NO CASESPECIFIC直接去除并记录表、字段信息,同时在脚本中对应字段的比较操作进行UPPER或者LOWER操作;

其他表信息:需要去除,包括FALLBACK、JOURNAL、CHECKSUM、MERGERBLOCKRATIO、FREESPACE等信息。

PRIMARY INDEX信息:转化为GBase 8a的分布键;

COMPRESS压缩信息:直接去除,改为表级的默认中度压缩,不带副本可以达到4.4倍压缩;

TITLE注释:改为COMMENT关键字;

02 脚本迁移

主要涉及语法、函数的处理,该去除的去除,该替换的替换,由于GBase 8a也是关系型数据库,支持标准的SQL,所以超过90%的SQL语法可以不用任何修改而直接使用。包括如下内容:

缺少的函数:NVL2、RANK,其中NVL2函数用UDF函数替换,RANK改为RANK OVER,

替换的函数:CHAR、CHARACTER函数对应GBase 8a的Length函数,ZEROIF、IFZERO函数替换GBase的IFNULL、NULLIF,FORMAT的用法在TD中比较广泛,迁移到8a时需要根据具体的不同用法进行对应修改。

排序顺序及NULL空值的位置:

DESC: TD空排在最后面,GBase 8a空排在最前面(迁移时要加NULLS LAST)

ASC: TD空排在最前面,GBase 8a空排在最后面(迁移时要加NULLS FIRST)

日期格式化处理:主要用到GBase的DATE_FORMAT、STR_TO_DATE、DATE函数来处理,均可以通过转换工具自动转换。

别名依赖:目前GBase支持投影列中的别名,但对于WHERE条件、OLAP中的别名还需转换工具进行替换。

总括上述技术迁移点,从Teradata到GBase的迁移,通过工具自动完成迁移后,即可完成差不多超过95%的工作量,再对极少数工具没有覆盖且语法特点毫无规律的内容进行手动修改完成整体迁移。基于丰富的迁移经验及高精度的转换工具,GBase 8a产品可以说在替换Teradata数据库方面已经非常成熟,对于迫切替换Teradata的用户可以随时联系GBase 8a,一流服务在等着你。

关于GBase 8a   

GBase 8a是南大通用自主研发的,面向海量数据查询分析应用领域的一款高性能国产分布式逻辑数据仓库,用于满足各个数据密集型行业日益增大的数据查询、数据统计、数据分析、数据挖掘和数据备份等数据存储、管理和处理需求,可用做数据仓库系统、BI系统和决策支持系统的承载数据库。产品主要应用在金融、电信、政企、能源、安全等拥有海量业务数据的行业得到规模化应用。

这篇关于GBASE南大通用-TeraData迁移GBase 8a PoC实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/545795

相关文章

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件