1. 一文詳解TDSQL PG版Oracle兼容性實踐

        共 8059字,需瀏覽 17分鐘

         ·

        2021-12-16 10:10

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



        TDSQL PG版介紹


        1. TDSQL PG版介紹

        ? ??? ? ? ? ?

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

        ? ? ? ?? ? ? ? ?

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

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


        語法差異對比


        2. 語法差異對比


        2.1 數(shù)據(jù)類型

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

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

        2.2 存儲過程語法差異

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


        2.3 其他兼容性介紹

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


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


        3. Oracle兼容能力


        3.1 分區(qū)表能力

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

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

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

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


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

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

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

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

        3.5 WITH FUNCTION語法支持

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

        3.6 PACKAGE

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

        3.7 ROWID & ROWNUM

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

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

        3.8 MERGE INTO

        Merge into可以將兩個表進(jìn)行合并。以下圖為例,目標(biāo)是Merge到Test1中,但參考Test2的數(shù)據(jù)。如果能匹配上,就修改Test1里的數(shù)據(jù),使數(shù)據(jù)與Test2的記錄一致,如果不匹配,就把Test2的數(shù)據(jù)插入到Test1中。最終執(zhí)行的效果類似于Test1合并了Test2,將Test2中的數(shù)據(jù)Merge到Test1中。在實現(xiàn)過程中,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

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

        ? ? ? ?? ? ? ? ?

        3.10 PIVOT & UNPIVOT

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

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

        3.11 其他兼容能力

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


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


        4. Oracle to TDSQL PG版遷移


        4.1 遷移工程面臨問題

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

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

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

        4.3 兼容性評估

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

        4.4 兼容性評估報告

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

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

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

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


        -- 更多精彩 --

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


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


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


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

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 青草成人 | 插比视频| 激情自拍偷拍 | 女警察双腿大开呻吟警花相伴视频 | 亚州乱伦视频 |