<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文詳解TDSQL PG版Oracle兼容性實(shí)踐

          共 8059字,需瀏覽 17分鐘

           ·

          2021-12-16 10:10

          TDSQL PG版分布式關(guān)系型數(shù)據(jù)庫(kù),是一款同時(shí)面向在線(xiàn)事務(wù)交易和MPP實(shí)時(shí)數(shù)據(jù)分析的高性能HTAP數(shù)據(jù)庫(kù)系統(tǒng)。面對(duì)應(yīng)用業(yè)務(wù)產(chǎn)生的不定性數(shù)據(jù)爆炸需求,不管是高并發(fā)交易還是海量實(shí)時(shí)數(shù)據(jù)分析,TDSQL PG版都能夠輕松處理目前TDSQL PG版已經(jīng)在金融、保險(xiǎn)、通信、稅務(wù)、政務(wù)等多個(gè)行業(yè)的核心交易系統(tǒng)上線(xiàn)運(yùn)行。



          TDSQL PG版介紹


          1. TDSQL PG版介紹

          ? ??? ? ? ? ?

          自2008年誕生,TDSQL PG版已有13年的發(fā)展歷史,產(chǎn)品全面兼容PostgreSQL,高度兼容Oracle語(yǔ)法,采用無(wú)共享架構(gòu),在提供大型數(shù)據(jù)倉(cāng)庫(kù)處理能力的同時(shí)還能完整支持分布式事務(wù)。此外,TDSQL PG版的三權(quán)(安全、審計(jì)、管理)分立安全體系也充分滿(mǎn)足企業(yè)對(duì)數(shù)據(jù)安全的需求。

          ? ? ? ?? ? ? ? ?

          TDSQL PG版具有六個(gè)方面的產(chǎn)品特性:

          • 訪(fǎng)問(wèn)接口豐富。支持C/C++、jdbc/odbc、python等各種常用語(yǔ)言接口。
          • 擴(kuò)展性良好。支持用戶(hù)自定義存儲(chǔ)過(guò)程、函數(shù)操作符。
          • MLS安全保護(hù)能力。使用三權(quán)分立安全體系,支持?jǐn)?shù)據(jù)透明脫敏加密。
          • 高效HTAP能力。支持千萬(wàn)級(jí)TPS事務(wù)處理,全并行分布計(jì)算框架可高效完成OLAP計(jì)算。
          • 強(qiáng)大數(shù)據(jù)治理能力。支持高效在線(xiàn)擴(kuò)縮容、用戶(hù)無(wú)感知數(shù)據(jù)rebalance和冷熱數(shù)據(jù)分級(jí)存儲(chǔ),節(jié)省用戶(hù)成本。
          • 數(shù)據(jù)庫(kù)特性豐富。支持各種窗口分析函數(shù),高度兼容Oracle常用函數(shù)和語(yǔ)法。
          ? ? ? ?? ? ? ? ?
          TDSQ PG版的應(yīng)用場(chǎng)景滿(mǎn)足以下業(yè)務(wù)特征,即:數(shù)據(jù)量上OLTP場(chǎng)景超過(guò)1T或OLAP場(chǎng)景超過(guò)5T;并發(fā)連接數(shù)超過(guò)2000,峰值業(yè)務(wù)100w/s;需要在線(xiàn)水平擴(kuò)展能力,需要兼顧OLTP以及OLAP的HTAP場(chǎng)景,還需要嚴(yán)格的分布式事務(wù)保證。在滿(mǎn)足這些業(yè)務(wù)特征的情況下,TDSQL PG版將會(huì)是合適的選擇。此外,TDSQL PG版也適用于地理信息系統(tǒng)、實(shí)時(shí)高并發(fā)系統(tǒng)以及數(shù)據(jù)庫(kù)國(guó)產(chǎn)化等場(chǎng)景。
          ? ? ? ?? ? ? ? ?
          上圖為T(mén)DSQL PG版的總體架構(gòu)。左上角GTM是事務(wù)管理器,主要提供全局事務(wù)信息同時(shí)管理全局對(duì)象。右上角Coordinator是協(xié)調(diào)節(jié)點(diǎn)CN,主要提供業(yè)務(wù)訪(fǎng)問(wèn)入口,每個(gè)CN節(jié)點(diǎn)角色完全對(duì)等。下方是DN數(shù)據(jù)節(jié)點(diǎn),即實(shí)際存儲(chǔ)數(shù)據(jù)的地方,每個(gè)數(shù)據(jù)節(jié)點(diǎn)會(huì)存儲(chǔ)一部分用戶(hù)數(shù)據(jù),所有的DN節(jié)點(diǎn)合起來(lái)形成完整的用戶(hù)數(shù)據(jù)集。管控系統(tǒng)則負(fù)責(zé)整個(gè)集群的節(jié)點(diǎn)資源分配、監(jiān)控告警、運(yùn)維管理、自動(dòng)化操作過(guò)程等工作。


          語(yǔ)法差異對(duì)比


          2. 語(yǔ)法差異對(duì)比


          2.1 數(shù)據(jù)類(lèi)型

          ? ? ? ?? ? ? ? ?
          Oracle中的許多數(shù)據(jù)類(lèi)型都可以與TDSQL PG版相互對(duì)應(yīng)。比如Oracle中的number數(shù)據(jù)類(lèi)型,對(duì)應(yīng)到TDSQL PG版里,可以用smallint、integer、bigint、numeric(p,s)等多種數(shù)據(jù)類(lèi)型進(jìn)行類(lèi)比替換。但受底層存儲(chǔ)的影響,smallint、integer、bigint的算術(shù)運(yùn)算效率比numberic高,因此要視業(yè)務(wù)需要轉(zhuǎn)換成對(duì)應(yīng)的smallint、integer、bigint,如若無(wú)法轉(zhuǎn)換時(shí)才轉(zhuǎn)換成numeric(p,s)。又例如Oracle中的float對(duì)應(yīng)TDSQL PG版中的double precision,Oracle中的binary_float對(duì)應(yīng)TDSQL-PG中的real,Oracle中的binary_double 對(duì)應(yīng)TDSQL PG版中的double precision等,這些都是兩者可對(duì)應(yīng)的數(shù)據(jù)類(lèi)型。

          此外Oracle中也有部分特有的數(shù)據(jù)庫(kù)類(lèi)型如rowid,PostgreSQL中并沒(méi)有,但TDSQL PG版對(duì)此做了兼容,添加了這種數(shù)據(jù)類(lèi)型。又如urowid ID在Oracle中是可變長(zhǎng)的字符存儲(chǔ),TDSQL PG版中則可以用varchar進(jìn)行替換。
          ? ? ? ?? ? ? ? ?
          long、clob、blob等都是PostgreSQL中沒(méi)有的數(shù)據(jù)類(lèi)型。針對(duì)這些類(lèi)型,TDSQL PG版做了大量兼容。如果用戶(hù)需要在應(yīng)用層用JDBC進(jìn)行連接,JDBC驅(qū)動(dòng)也需要同步進(jìn)行兼容改造。Oracle中的date類(lèi)型也和PostgreSQL不同,Oracle中可以精確到時(shí)分秒,而在PostgreSQL中只有年月日。為了兼容這一數(shù)據(jù)類(lèi)型,TDSQL PG版在Oracle兼容開(kāi)關(guān)打開(kāi)的情況下底層用戶(hù)定義時(shí)寫(xiě)Date類(lèi)型,但下方會(huì)轉(zhuǎn)成Timestamp(0),可以直接精確到秒級(jí)。(Oracle兼容開(kāi)關(guān)打開(kāi)就是Oracle模式,不打開(kāi)就是PG模式)。

          2.2 存儲(chǔ)過(guò)程語(yǔ)法差異

          Oracle創(chuàng)建存儲(chǔ)過(guò)程的語(yǔ)法與PostgreSQL有很大差異。比如用戶(hù)在Oracle中創(chuàng)建存儲(chǔ)過(guò)程,如果不需要輸入?yún)?shù)、輸出參數(shù),則無(wú)需括號(hào),但在PostgreSQL中則必須寫(xiě)括號(hào),TDSQL PG版對(duì)此進(jìn)行兼容,業(yè)務(wù)人員可根據(jù)需求選擇寫(xiě)或不寫(xiě)。在函數(shù)中,Oracle是從is開(kāi)始,PostgreSQL是從as開(kāi)始,TDSQL PG版兩者都支持。PostgreSQL中,函數(shù)存儲(chǔ)過(guò)程body使用$$進(jìn)行封裝,Oracle則不需要,TDSQL PG版兩者都支持。Oracle支持“end存儲(chǔ)過(guò)程名稱(chēng)”結(jié)束,PostgreSQL則不支持,對(duì)此TDSQL PG版做了兼容。存儲(chǔ)過(guò)程中,Oracle使用“/”來(lái)結(jié)尾,表示該函數(shù)存儲(chǔ)過(guò)程創(chuàng)建完成,但在PostgreSQL中則采用language ?plpgsql,對(duì)此TDSQL PG版也做了兼容,用戶(hù)可以用“/”進(jìn)行結(jié)尾。
          ? ? ? ?? ? ? ? ?
          在變量聲明過(guò)程中,PostgreSQL需要指定Declare聲明一個(gè)變量,但Oracle不需要,TDSQL PG版則完全兼容。存儲(chǔ)過(guò)程中的輸入、輸出參數(shù),Oracle支持IN、OUT和INOUT三種類(lèi)型,但PostgreSQL不支持OUT,TDSQL PG版對(duì)此做了兼容,完整支持IN、OUT和INOUT三種類(lèi)型。在調(diào)用方面,Oracle存儲(chǔ)過(guò)程的調(diào)用支持三種形式:call后加存儲(chǔ)過(guò)程名稱(chēng)、exec后加存儲(chǔ)過(guò)程名稱(chēng)、直接調(diào)用存儲(chǔ)過(guò)程名稱(chēng),而PostgreSQL中只能使用call進(jìn)行調(diào)用,TDSQL PG版對(duì)此進(jìn)行兼容改造,支持三種形式。


          2.3 其他兼容性介紹

          其他兼容方面,TDSQL PG版支持Oracle特有的package及200多個(gè)Oracle常用的系統(tǒng)函數(shù)。而Hint、Merge ?into語(yǔ)法、connect by語(yǔ)法、pivot行轉(zhuǎn)列、unpivot列轉(zhuǎn)行、分區(qū)表ddl增強(qiáng)、dual偽表、rowid、rownum、sysdate、systimestamp,這些在Oracle中常用的語(yǔ)法和函數(shù),TDSQL PG版都可以兼容。
          ? ? ? ?? ? ? ? ?
          此外,目前TDSQL PG版也支持通過(guò)dblink去訪(fǎng)問(wèn)Oracle中的數(shù)據(jù)、select字段別名不需要as修飾、update 別名支持、insert all語(yǔ)法同時(shí)插入多個(gè)表、特有的分頁(yè)查詢(xún)語(yǔ)法、只讀事物中要獲取序列等。
          ? ? ? ? ? ? ? ?


          傳統(tǒng)數(shù)據(jù)庫(kù)架構(gòu)瓶頸


          3. Oracle兼容能力


          3.1 分區(qū)表能力

          TDSQL PG版支持range、list 、hash 、高性能等間隔分區(qū),并且可以實(shí)現(xiàn)多級(jí)分區(qū)級(jí)聯(lián),在分區(qū)表的訪(fǎng)問(wèn)方法上全面兼容Oracle語(yǔ)法,除可以直接訪(fǎng)問(wèn)子表外,還支持帶父表關(guān)聯(lián)子表訪(fǎng)問(wèn)。同時(shí)TDSQL PG版也支持update分區(qū)字段的值。以下圖為例,0-30范圍的子表中的id分區(qū)鍵的值通過(guò)update將其改為50時(shí),因?yàn)?0大于30,系統(tǒng)會(huì)自動(dòng)將修改后的數(shù)據(jù)加入到30-60范圍的子表,而刪除0-30范圍子表中的舊數(shù)據(jù)。TDSQL PG版還具備分區(qū)子表合并拆分能力及新加分區(qū)時(shí)default分區(qū)自動(dòng)移動(dòng)的能力。
          ? ? ? ?? ? ? ? ?

          3.2 分區(qū)子表合并&拆分

          隨著時(shí)間的推移,在使用過(guò)程中,系統(tǒng)中的分區(qū)會(huì)越來(lái)越多。為方便管理,很多用戶(hù)在早期想將分區(qū)進(jìn)行合并,TDSQL PG版也像Oracle一樣提供了分區(qū)子表合并的能力。如圖中左邊所示,通過(guò)merge partitions 202001和 202001的分區(qū),形成新的分區(qū),可以有效減少分區(qū)數(shù)量,便于管理。

          如果經(jīng)常訪(fǎng)問(wèn)的熱點(diǎn)數(shù)據(jù)所在分區(qū)內(nèi)數(shù)據(jù)過(guò)多,就容易掃描到很多不必要的數(shù)據(jù),這時(shí)可將分區(qū)進(jìn)行拆分。如圖中右邊所示,將熱點(diǎn)分區(qū)0-60范圍分區(qū)split拆分,后續(xù)訪(fǎng)問(wèn)熱點(diǎn)數(shù)據(jù)50時(shí)就只需掃描30-60范圍的分區(qū),可以有效減少數(shù)據(jù)掃描,提高查詢(xún)效率。
          ? ? ? ?? ? ? ? ?
          具體的實(shí)現(xiàn)方式為:merge時(shí)數(shù)據(jù)庫(kù)底層會(huì)新建一個(gè)分區(qū),將指定要合并的分區(qū)數(shù)據(jù)全面遷移,再刪除舊的分區(qū)。Split時(shí),數(shù)據(jù)庫(kù)底層會(huì)創(chuàng)建出新的2個(gè)分區(qū),將舊分區(qū)的數(shù)據(jù)按照大于/小于拆分點(diǎn)進(jìn)行劃分,分別插入不同的新的小分區(qū),再刪除舊分區(qū)。


          3.3 Default分區(qū)數(shù)據(jù)維護(hù)

          分區(qū)表中一般會(huì)有一個(gè)默認(rèn)的default子分區(qū),用于存儲(chǔ)不屬于其他子分區(qū)的數(shù)據(jù)。比如在下圖中,2019年12月、2020年3月的數(shù)據(jù),都不屬于已有的2020年1、2月的分區(qū),因此這些數(shù)據(jù)會(huì)自動(dòng)放在default子分區(qū)中。如果后續(xù)用戶(hù)新創(chuàng)建了2020年3月的分區(qū),TDSQL PG版可以像oracle一樣,自動(dòng)將屬于2020年3月的數(shù)據(jù)從default子分區(qū)遷移到新分區(qū)中,在default子分區(qū)中就只剩2019年12月的數(shù)據(jù)。整個(gè)過(guò)程中用戶(hù)完全無(wú)感知,只需要?jiǎng)?chuàng)建分區(qū),TDSQL PG版內(nèi)部會(huì)自動(dòng)進(jìn)行遷移。TDSQL PG版底層具體的實(shí)現(xiàn)方法:掃描default分區(qū)表,將滿(mǎn)足新分區(qū)的數(shù)據(jù)插入新分區(qū),刪除default分區(qū)表中這些數(shù)據(jù)。
          ? ? ? ?? ? ? ? ?

          3.4 存儲(chǔ)過(guò)程/函數(shù)擴(kuò)展語(yǔ)法能力

          為全面兼容oracle,TDSQL PG版的存儲(chǔ)過(guò)程和函數(shù)在創(chuàng)建調(diào)用語(yǔ)法上也進(jìn)行了適配,除前面提到的函數(shù)體不需要$$包圍、以/結(jié)尾、空參數(shù)不需要括號(hào)等細(xì)節(jié)外,TDSQL PG版還支持在任意的statement語(yǔ)句、block代碼塊前添加label標(biāo)簽,再goto跳轉(zhuǎn)到指定的標(biāo)簽,而原生PostgreSQL只能在循環(huán)前加label。實(shí)現(xiàn)方式是將執(zhí)行指針cur被賦值為label所在位置,再?gòu)膌abel所在的位置繼續(xù)往下執(zhí)行。
          ? ? ? ?? ? ? ? ?

          3.5 WITH FUNCTION語(yǔ)法支持

          除了儲(chǔ)過(guò)程,TDSQL PG版還對(duì)存儲(chǔ)函數(shù)進(jìn)行了擴(kuò)展,比如在函數(shù)上添加了對(duì)WITH FUNCTION語(yǔ)法的支持。以下圖為例,select調(diào)用的add function函數(shù)只在此語(yǔ)句中有效,其他語(yǔ)句無(wú)效。如果系統(tǒng)中已經(jīng)有同名函數(shù),這個(gè)select語(yǔ)句中的WITH FUNCTION的優(yōu)先級(jí)會(huì)高于其他同名函數(shù)。實(shí)現(xiàn)方式為:函數(shù)編譯后不存入pg_proc,存入Query的結(jié)構(gòu)體中,隨著query的清理而被清理;調(diào)查時(shí)優(yōu)先查找Query帶的function,沒(méi)有找到再查pg_proc。
          ? ? ??? ? ? ? ?

          3.6 PACKAGE

          Oracle中Package比較常見(jiàn),用戶(hù)常用的函數(shù)大都存儲(chǔ)在Package中。目前TDSQL?PG版也支持Package,用戶(hù)可以將自定義的常用函數(shù)封裝到Package中,使用時(shí)指定Package來(lái)調(diào)用對(duì)應(yīng)函數(shù)。具體的實(shí)現(xiàn)方式是:在創(chuàng)建package時(shí)后臺(tái)會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的schema和里面的函數(shù)(函數(shù)內(nèi)容為空),創(chuàng)建包體的時(shí)候指定函數(shù)內(nèi)容時(shí)再去alter function,包里的變量都放在schema下面,可參考PL實(shí)現(xiàn)PL中的變量功能。刪除時(shí)則是先刪除包體再刪除包。
          ? ? ? ? ? ? ? ?

          3.7 ROWID & ROWNUM

          ROWID和ROWNUM都是Oracle特有的語(yǔ)法,PostgreSQL并不支持,TDSQL PG版對(duì)此進(jìn)行兼容改造,支持ROWID和ROWNUM。

          兩者的區(qū)別在于:ROW ID的兼容實(shí)現(xiàn)是在用戶(hù)建表時(shí),指定該表是With ROWID。后續(xù)查詢(xún)就可以查詢(xún)到ROWID具體的值,ROWID相當(dāng)于唯一標(biāo)識(shí),在用戶(hù)寫(xiě)入階段會(huì)從本地SEQUENCE獲取唯一ID值再加上分布式的nodeid進(jìn)行填充,寫(xiě)入到用戶(hù)數(shù)據(jù)文件中。ROWNUM的實(shí)現(xiàn)是做完過(guò)濾和投影后CN返回給用戶(hù)時(shí)添加的一個(gè)編號(hào),在用戶(hù)最后返回階段進(jìn)行添加。
          ? ? ? ?? ? ? ? ?

          3.8 MERGE INTO

          Merge into可以將兩個(gè)表進(jìn)行合并。以下圖為例,目標(biāo)是Merge到Test1中,但參考Test2的數(shù)據(jù)。如果能匹配上,就修改Test1里的數(shù)據(jù),使數(shù)據(jù)與Test2的記錄一致,如果不匹配,就把Test2的數(shù)據(jù)插入到Test1中。最終執(zhí)行的效果類(lèi)似于Test1合并了Test2,將Test2中的數(shù)據(jù)Merge到Test1中。在實(shí)現(xiàn)過(guò)程中,TDSQL PG版添加了merge算子,在Query結(jié)構(gòu)體中新增了
          int mergeTarget_relation;
          List* mergeSourceTargetList;
          List* mergeActionList; /* list of actions for MERGE (only) */
          ? ? ? ?? ? ? ? ?

          3.9 Start with connect by

          語(yǔ)法解析支持connect by查詢(xún)。在解析時(shí)通過(guò)函數(shù)make connect by stmt將select stmt改寫(xiě)為通過(guò)遞歸CTE查詢(xún)來(lái)實(shí)現(xiàn)start with connect by層次查詢(xún)子句。后續(xù)通過(guò)TDSQL PG版本身支持的遞歸CTE語(yǔ)句來(lái)執(zhí)行。

          ? ? ? ?? ? ? ? ?

          3.10 PIVOT & UNPIVOT

          Pivot可以將行數(shù)據(jù)轉(zhuǎn)列屬性。語(yǔ)法:
          PIVOT '(' target_el FOR columnref IN_P '(' pivot_expr_list ')' ')'
          TDSQL PG版實(shí)現(xiàn)方法是將不再target_el以及columnref中的列作為group by列,通過(guò)pivot_expr_list對(duì)target_el中的聚集函數(shù)參數(shù)用case when進(jìn)行重寫(xiě),規(guī)則是“有值取值、沒(méi)值取空”。

          UNPivot可以將列屬性轉(zhuǎn)行數(shù)據(jù), 本質(zhì)是轉(zhuǎn)化為 join lateral。實(shí)現(xiàn)方法是獲取IN中的列,拼接成VALUES(…),將UNPIVOT column和FOR column拼接成VALUES的別名,將查詢(xún)中FROM后面的其他表與value rte表做 join lateral。
          ? ? ? ?? ? ? ? ?

          3.11 其他兼容能力

          此外,TDSQL PG版支持Oracle中的日期、時(shí)間、字符串、表達(dá)式等常用函數(shù)。目前TDSQL PG版可以兼容98%以上的運(yùn)營(yíng)商、保險(xiǎn)行業(yè)常用Oracle語(yǔ)法,兼容85%以上的銀行機(jī)構(gòu)常用Oracle語(yǔ)法,有效降低傳統(tǒng)IT企業(yè)的國(guó)產(chǎn)化及信創(chuàng)門(mén)檻。
          ? ? ? ? ? ? ? ?


          傳統(tǒng)數(shù)據(jù)庫(kù)架構(gòu)瓶頸


          4. Oracle to TDSQL PG版遷移


          4.1 遷移工程面臨問(wèn)題

          從Oracle到TDSQL PG版的遷移過(guò)程會(huì)涉及到四個(gè)問(wèn)題一是成本高且工作量大;二是遷移技術(shù)復(fù)雜;三是兼容程度不明確;四是遷移過(guò)程無(wú)標(biāo)準(zhǔn)化流程,突發(fā)問(wèn)題頻繁。我們將上述問(wèn)題分門(mén)別類(lèi),逐一進(jìn)行解決。
          ? ? ? ? ? ? ? ?
          針對(duì)工作量大的問(wèn)題,可以通過(guò)TDSQL PG版提供的簡(jiǎn)易自動(dòng)化遷移平臺(tái),下發(fā)一個(gè)遷移任務(wù)即可解決;針對(duì)遷移技術(shù)復(fù)雜的問(wèn)題,我們會(huì)為用戶(hù)提供專(zhuān)業(yè)的技術(shù)支持,協(xié)助用戶(hù)進(jìn)行遷移;針對(duì)兼容程度不明確的問(wèn)題,我們會(huì)在遷移過(guò)程中進(jìn)行評(píng)估,生成評(píng)估報(bào)告來(lái)說(shuō)明兼容程度;針對(duì)遷移過(guò)程無(wú)標(biāo)準(zhǔn)化流程的問(wèn)題,我們會(huì)在每一步都輸出相關(guān)文檔、報(bào)告來(lái)進(jìn)行遷移,促使流程標(biāo)準(zhǔn)化。

          4.2 遷移工具技術(shù)架構(gòu)

          下圖是TDSQL PG版遷移工具的技術(shù)架構(gòu),左邊是源庫(kù),右邊是目標(biāo)庫(kù),分為數(shù)據(jù)抽取模塊和數(shù)據(jù)裝載模塊。數(shù)據(jù)抽取模塊會(huì)從源庫(kù)里面抽取,實(shí)時(shí)導(dǎo)出用戶(hù)數(shù)據(jù)。數(shù)據(jù)裝載模塊會(huì)在目標(biāo)庫(kù)里進(jìn)行實(shí)時(shí)數(shù)據(jù)寫(xiě)入,進(jìn)行數(shù)據(jù)遷移。
          ? ? ? ?? ? ? ? ?
          針對(duì)部分語(yǔ)法不能完全兼容的問(wèn)題,我們會(huì)進(jìn)行語(yǔ)法轉(zhuǎn)換,把數(shù)據(jù)傳遞到數(shù)據(jù)裝載模塊,數(shù)據(jù)裝載模塊會(huì)直接實(shí)時(shí)寫(xiě)入到目標(biāo)庫(kù)中。遷移過(guò)程中,監(jiān)控模塊會(huì)實(shí)時(shí)監(jiān)控整個(gè)遷移任務(wù),期間會(huì)輸出兼容報(bào)告,遷移完后進(jìn)行數(shù)據(jù)校驗(yàn)。

          4.3 兼容性評(píng)估

          兼容性評(píng)估會(huì)輸出兩個(gè)報(bào)告:對(duì)象兼容報(bào)告和應(yīng)用兼容報(bào)告。對(duì)象兼容是指數(shù)據(jù)庫(kù)的對(duì)象,如表、索引、視圖、函數(shù)或數(shù)據(jù)類(lèi)型等信息;應(yīng)用兼容主要是指前端應(yīng)用層發(fā)送給源端執(zhí)行的SQL。我們會(huì)針對(duì)這兩方面輸出兼容報(bào)告。
          ? ? ? ?? ? ? ? ?

          4.4 兼容性評(píng)估報(bào)告

          下圖是一份對(duì)象兼容報(bào)告,分為三種顏色:藍(lán)色代表完全兼容,不用做任何改造就可以將Oracle中對(duì)象在TDSQL PG版中進(jìn)行使用;綠色代表內(nèi)部轉(zhuǎn)換,針對(duì)Oracle的使用語(yǔ)法或類(lèi)型,工具會(huì)自動(dòng)轉(zhuǎn)換成TDSQL PG版中適配的語(yǔ)法和類(lèi)型,從而進(jìn)行遷移;紅色代表不能轉(zhuǎn)換,完全不兼容,需要用戶(hù)人工接入。
          ? ? ? ? ? ? ? ?
          4.5 遷移全流程介紹
          整個(gè)遷移流程可分為四個(gè)環(huán)節(jié)。首先是應(yīng)用開(kāi)發(fā)適配和生產(chǎn)環(huán)境準(zhǔn)備。在進(jìn)行應(yīng)用開(kāi)發(fā)適配過(guò)程中,可以并行地進(jìn)行生產(chǎn)環(huán)境的系統(tǒng)規(guī)劃,調(diào)驗(yàn)原先的系統(tǒng)布局。其次是系統(tǒng)測(cè)試環(huán)節(jié),將原先在Oracle中的存量、增量數(shù)據(jù)全部遷移過(guò)來(lái)進(jìn)行測(cè)試驗(yàn)證,包含功能驗(yàn)證和性能驗(yàn)證。

          驗(yàn)證完后到雙軌制上線(xiàn)環(huán)節(jié),相當(dāng)于老系統(tǒng)和新系統(tǒng)同時(shí)并行運(yùn)行。正式上線(xiàn)投產(chǎn)后,再根據(jù)用戶(hù)需求判斷是否需要將TDSQL PG版中的數(shù)據(jù)同步到老系統(tǒng)中。這個(gè)過(guò)程需要和用戶(hù)共同完成,圖中綠色部分是需要用戶(hù)配合的部分,藍(lán)色部分則是我們負(fù)責(zé)的部分。
          ? ? ? ? ? ? ? ?
          4.6 雙軌運(yùn)行方案
          下圖是我們的雙軌運(yùn)行方案,圖中有兩個(gè)架構(gòu),分別是Oracle ?To ?TDSQL PG版和TDSQL PG ?To ?Oracle。

          業(yè)務(wù)上線(xiàn)前期,我們采用雙軌運(yùn)行,支持從Oracle到TDSQL PG版以及從TDSQL PG版到Oracle的數(shù)據(jù)同步。通過(guò)業(yè)務(wù)開(kāi)關(guān),用戶(hù)可以根據(jù)需求,選擇將部分業(yè)務(wù)放在原有系統(tǒng)或?qū)⒘硪徊糠謽I(yè)務(wù)放在新系統(tǒng),也可以選擇全部放在新系統(tǒng)或老系統(tǒng)。當(dāng)雙軌運(yùn)行持續(xù)穩(wěn)定后才會(huì)進(jìn)行正式上線(xiàn)。雙軌制運(yùn)行相當(dāng)于過(guò)渡環(huán)節(jié),如果有問(wèn)題,用戶(hù)可以降低回退到以前的系統(tǒng)上,給數(shù)據(jù)增加了雙層保護(hù)。當(dāng)然,雙軌制運(yùn)行的過(guò)程相應(yīng)地也會(huì)更加復(fù)雜。
          ? ? ? ?? ? ? ? ?
          TDSQL PG版起源于技術(shù)成熟、功能強(qiáng)大的PostgreSQL,在此基礎(chǔ)上騰訊云數(shù)據(jù)庫(kù)構(gòu)造和發(fā)行了功能更豐富、穩(wěn)定性更好、兼容性更廣、安全性更高、性能更強(qiáng)、擴(kuò)展性極好的分布式數(shù)據(jù)庫(kù)TDSQL PG版產(chǎn)品。

          騰訊公司對(duì)TDSQL PG版具有完全自主知識(shí)產(chǎn)權(quán),實(shí)現(xiàn)安全可控, 具備在中高端市場(chǎng)規(guī)模化替代國(guó)外數(shù)據(jù)庫(kù)的能力,在數(shù)據(jù)庫(kù)基礎(chǔ)軟件層面有力支撐了國(guó)家安全可控戰(zhàn)略發(fā)展。當(dāng)前TDSQL PG版已經(jīng)在金融、保險(xiǎn)、通信、稅務(wù)、公安、消防、政務(wù)等多個(gè)行業(yè)的核心交易系統(tǒng)上線(xiàn)運(yùn)行,為眾多行業(yè)客戶(hù)提供優(yōu)質(zhì)服務(wù)。


          -- 更多精彩 --

          云原生數(shù)據(jù)庫(kù)TDSQL-C PostgreSQL版內(nèi)核解密


          揭秘TDSQL-A:兼容Oracle的同時(shí)支持海量數(shù)據(jù)交互


          海量數(shù)據(jù),極速體驗(yàn)——TDSQL-A核心架構(gòu)詳解來(lái)了


          點(diǎn)擊閱讀原文,了解更多優(yōu)惠
          瀏覽 66
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色片网站免费在线观看 | 中文无码视频在线播放 | 亚洲无码黄色 | 国产精品九九九九九九九九 | 五月丁香花 |