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

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更