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

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

详解Python中通用工具类与异常处理

《详解Python中通用工具类与异常处理》在Python开发中,编写可重用的工具类和通用的异常处理机制是提高代码质量和开发效率的关键,本文将介绍如何将特定的异常类改写为更通用的ValidationEx... 目录1. 通用异常类:ValidationException2. 通用工具类:Utils3. 示例文

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO

springboot整合swagger2之最佳实践

来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。 一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。 SpringBoot集成 pom <!--swagge