GBase新聞

專(zhuān)注于數據庫軟件產(chǎn)品和服務(wù),致力于成為用戶(hù)最信賴(lài)的數據庫產(chǎn)品供應商

Teradata遷移GBase 8a PoC實(shí)踐

發(fā)布時(shí)間:2023-02-21

隨著(zhù)TeraData宣布退出中國市場(chǎng),眾多用戶(hù)紛紛考慮正在使用的數據庫的遷移問(wèn)題。數據庫遷移,考察的是數據庫廠(chǎng)商的配套工具、方法論、實(shí)施經(jīng)驗,不僅僅要求轉換成功率高,轉換效率高,也要求轉換后可執行,執行結果要準確。近幾年,GBase完成了100+用戶(hù)TeraData等國外數據庫替換遷移,積累了多個(gè)項目的遷移經(jīng)驗,以轉換高、精、準而收到合作伙伴或廠(chǎng)商的好評。

以2022年某金融用戶(hù)的POC測試為例:轉換內容包括DDL、視圖、批量Perl腳本,轉換的數量在PoC中也是算是偏多的,包括600多個(gè)DDL、視圖,超過(guò)100個(gè)Perl腳本。最終轉換成功率、轉換成功率均考核達標,DDL、視圖轉換成功率達到99% ,Perl腳本的轉換成功率要求達到85%,且即轉即用,不能做任何修改,轉完即跑,跑則能對。這種轉即用的遷移,做過(guò)數據庫遷移的廠(chǎng)商都知道這意味的什么,那種靠鋪眾多人力手動(dòng)遷移的情況不能也不會(huì )發(fā)生在Teradata到GBase 8a遷移產(chǎn)品上。

數據庫系統遷移,包括如下的幾部分核心工作,從Teradata到GBase 8a的遷移也遵循此規則,主要步驟按照先后次序為:

  • 從Teradata按照要求導出數據,導出要求數據的列分隔符、包圍符、空串與NULL值的區分、字符集等指標要提前規劃;

  • 從Teradata數據庫對象的導出,包括DDL、視圖、函數等;

  • 客制化GBase 8a的遷移工具,最大化覆蓋貼合于客戶(hù)特點(diǎn)的編寫(xiě)語(yǔ)法寫(xiě)作特點(diǎn),最大化的提升轉換成功率,客制化時(shí)間可控制在3天到5天內完成。

  • 在GBase側建立數據庫對象;

  • 根據Perl腳本中的SQL語(yǔ)句,使用工具來(lái)重建數據分布鍵值,默認采用原Teradata中的index作為分布鍵;

  • 導入GBase 8a從Teradata落地后的文本文件,并注意左空格的保留,注意日期的存儲格式,注意大小寫(xiě)不敏感等信息;

  • 遷移Perl腳本到GBase 8a;

  • 遷移后處理結果Teradata于GBase 8a結果比對;

  • 遷移到GBase 8a后性能極致性?xún)?yōu)化;

  • Teradata于GBase 8a的并行運行,確保穩定、數據無(wú)誤;

  • 正式切換到GBase 8a,完成數據庫系統的遷移;

在本次的POC中,由于GBase 8a與Teradata的高度兼容性,涉及到遷移內容不多,如下面兩個(gè)部分的羅列,這些遷移都通過(guò)工具自動(dòng)完成,遷移成功后,可直接運行。

DDL、視圖遷移

該部分遷移,主要包括表類(lèi)型關(guān)鍵字的處理,字段類(lèi)型的處理,字段約束、字符集的處理、以及Teradata其他DDL特殊數據處理內容,具體為:

表類(lèi)型:CREATE [MULTI]SET TABLE直接改為CREATE TABLE,CREATE GLOBAL TEMPORARY TABLE改為GBase的物理表,CREATE VOLATILE TABLE 是SESSION級臨時(shí)表,改為GBase TEMPORARY表;

常見(jiàn)數據類(lèi)型:99%可以通用,cHAR、VARCHAR、DATETIME、DATE、TIME、TIMESTAMP、DECIMAL、INT等;

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

大小寫(xiě)不敏感:關(guān)鍵字UPPERCASE、NO CASESPECIFIC直接去除并記錄表、字段信息,同時(shí)在腳本中對應字段的比較操作進(jìn)行UPPER或者LOWER操作;

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

PRIMARY INDEX信息:轉化為GBase 8a的分布鍵;

COMPRESS壓縮信息:直接去除,改為表級的默認中度壓縮,不帶副本可以達到4.4倍壓縮;

TITLE注釋?zhuān)?/span>改為COMMENT關(guān)鍵字;

腳本遷移

主要涉及語(yǔ)法、函數的處理,該去除的去除,該替換的替換,由于GBase 8a也是關(guān)系型數據庫,支持標準的SQL,所以超過(guò)90%的SQL語(yǔ)法可以不用任何修改而直接使用。包括如下內容:

缺少的函數:NVL2、RANK,其中NVL2函數用UDF函數替換,RANK改為RANK OVER,

替換的函數:CHAR、CHARACTER函數對應GBase 8a的Length函數,ZEROIF、IFZERO函數替換GBase的IFNULL、NULLIF,FORMAT的用法在TD中比較廣泛,遷移到8a時(shí)需要根據具體的不同用法進(jìn)行對應修改。

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

DESC:TD空排在最后面,GBase 8a空排在最前面(遷移時(shí)要加NULLS LAST)

ASC: TD空排在最前面,GBase 8a空排在最后面(遷移時(shí)要加NULLS FIRST)

日期格式化處理:主要用到GBase的DATE_FORMAT、STR_TO_DATE、DATE函數來(lái)處理,均可以通過(guò)轉換工具自動(dòng)轉換。

別名依賴(lài):目前GBase支持投影列中的別名,但對于WHERE條件、OLAP中的別名還需轉換工具進(jìn)行替換。

總括上述技術(shù)遷移點(diǎn),從Teradata到GBase的遷移,通過(guò)工具自動(dòng)完成遷移后,即可完成差不多超過(guò)95%的工作量,再對極少數工具沒(méi)有覆蓋且語(yǔ)法特點(diǎn)毫無(wú)規律的內容進(jìn)行手動(dòng)修改完成整體遷移?;谪S富的遷移經(jīng)驗及高精度的轉換工具,GBase 8a產(chǎn)品可以說(shuō)在替換Teradata數據庫方面已經(jīng)非常成熟,對于迫切替換Teradata的用戶(hù)可以隨時(shí)聯(lián)系GBase 8a,一流服務(wù)在等著(zhù)你。

關(guān)于GBase 8a

GBase 8a是南大通用自主研發(fā)的,面向海量數據查詢(xún)分析應用領(lǐng)域的一款高性能?chē)a(chǎn)分布式邏輯數據倉庫,用于滿(mǎn)足各個(gè)數據密集型行業(yè)日益增大的數據查詢(xún)、數據統計、數據分析、數據挖掘和數據備份等數據存儲、管理和處理需求,可用做數據倉庫系統、BI系統和決策支持系統的承載數據庫。產(chǎn)品主要應用在金融、電信、z政企、能源、安全等擁有海量業(yè)務(wù)數據的行業(yè)得到規?;瘧?。