長(zhǎng)文:國(guó)產(chǎn)數(shù)據(jù)庫(kù)兼容性一覽
原創(chuàng)近期又接觸到部分兼容性工作,特收集整理了部分國(guó)產(chǎn)數(shù)據(jù)庫(kù)的兼容情況,整體感覺(jué)國(guó)內(nèi)產(chǎn)品這部分做的差異還是蠻大的。本文將從一張對(duì)比表入手,談?wù)剣?guó)內(nèi)產(chǎn)品的兼容性問(wèn)題,并簡(jiǎn)單介紹下各家的兼容性情況。
1. 常見(jiàn)國(guó)產(chǎn)數(shù)據(jù)庫(kù)兼容性一覽
讓我們先從一張《數(shù)據(jù)庫(kù)庫(kù)兼容性一覽表》開(kāi)始,談?wù)劯骷壹嫒菪浴?/span>
? 兼容對(duì)象
在兼容對(duì)象上,大部分產(chǎn)品都將Oracle、MySQL、PostgreSQL作為兼容對(duì)象,部分產(chǎn)品還將如DB2、SQL Server等作為兼容對(duì)象。在實(shí)現(xiàn)上有些產(chǎn)品是支持多種模式,可以在初始化時(shí)進(jìn)行選擇,這里用[MultiDB]進(jìn)行區(qū)分。
? 兼容層次
兼容層次,是指產(chǎn)品在那個(gè)層次提供的兼容能力,這里分為多種情況。
- 內(nèi)核級(jí):有些產(chǎn)品在內(nèi)核層面就兼容某些數(shù)據(jù)庫(kù),這類已“開(kāi)源+二開(kāi)”類產(chǎn)品居多。因?yàn)槭腔陂_(kāi)源產(chǎn)品構(gòu)建的,因此天然就具備對(duì)此產(chǎn)品的兼容性。
- 產(chǎn)品級(jí):有些產(chǎn)品是以“品牌”形式存在的,即不是單一產(chǎn)品構(gòu)成;其為了兼容其他數(shù)據(jù)庫(kù),提供獨(dú)立產(chǎn)品來(lái)滿足。這主要是一些云廠商的產(chǎn)品采用這樣的策略。
- 數(shù)據(jù)庫(kù)級(jí):有些產(chǎn)品的兼容性是在數(shù)據(jù)庫(kù)初始化的階段進(jìn)行指定,且一旦指定后就不能改變。
- 租戶級(jí):有些產(chǎn)品是在租戶層面提供指定的兼容性能力,租戶一旦指定兼容性后就不能改變。
- 功能級(jí):有些產(chǎn)品是在產(chǎn)品自身能力上增強(qiáng),支持其他數(shù)據(jù)庫(kù)功能。
? 兼容評(píng)估
數(shù)據(jù)庫(kù)兼容性包含的維度很多,為了方便用戶了解數(shù)據(jù)庫(kù)的兼容能力,很多產(chǎn)品提供了兼容評(píng)估。在實(shí)現(xiàn)上有些提供了工具,有些則通過(guò)文檔進(jìn)行說(shuō)明。
? 數(shù)據(jù)遷移
除了對(duì)象、語(yǔ)法等兼容外,是否能從源端將數(shù)據(jù)很方便地遷移、同步到目標(biāo)端也很重要。這里列出產(chǎn)品是否提供的異構(gòu)數(shù)據(jù)庫(kù)的遷移能力。
? 兼容項(xiàng):<通訊協(xié)議>
協(xié)議的兼容,可以提供一種很友好的管理、使用體驗(yàn),不用改變?cè)羞B接方式的情況下就可以使用新的一種數(shù)據(jù)庫(kù)。特別是針對(duì)上下游生態(tài)工具而言,協(xié)議兼容有助于快速上手使用新數(shù)據(jù)庫(kù);例如常見(jiàn)的如 Navicat、DBeaver 等工具可以快速連接訪問(wèn)數(shù)據(jù)庫(kù)或者如 MySQL、PostgreSQL 的命令行工具也如此。
? 兼容項(xiàng):<數(shù)據(jù)類型>
數(shù)據(jù)庫(kù)系統(tǒng)存儲(chǔ)和處理數(shù)據(jù)時(shí),不同數(shù)據(jù)庫(kù)管理系統(tǒng)可能對(duì)數(shù)據(jù)類型的支持存在差異,這就需要考慮數(shù)據(jù)類型兼容性。數(shù)據(jù)類型兼容性主要涉及以下幾個(gè)方面:
- 數(shù)據(jù)完整性:數(shù)據(jù)類型的兼容性影響了數(shù)據(jù)的完整性。如果在數(shù)據(jù)遷移或跨數(shù)據(jù)庫(kù)系統(tǒng)操作時(shí),不同數(shù)據(jù)庫(kù)系統(tǒng)對(duì)數(shù)據(jù)類型的支持不同,會(huì)導(dǎo)致數(shù)據(jù)類型轉(zhuǎn)換或截?cái)?,從而影響?shù)據(jù)的完整性。
- 查詢效率:數(shù)據(jù)類型的不兼容性會(huì)影響查詢效率。如果不同數(shù)據(jù)庫(kù)系統(tǒng)對(duì)數(shù)據(jù)類型的存儲(chǔ)和索引方式不同,可能會(huì)導(dǎo)致查詢性能下降。
- 應(yīng)用開(kāi)發(fā)難度:數(shù)據(jù)類型的不兼容性會(huì)增加應(yīng)用開(kāi)發(fā)的難度。在跨數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)時(shí),如果數(shù)據(jù)類型不兼容,就需要針對(duì)不同數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行特殊處理,增加了開(kāi)發(fā)和維護(hù)的成本。
所以數(shù)據(jù)類型兼容性在數(shù)據(jù)庫(kù)兼容性評(píng)估中具有重要的意義,需要綜合考慮數(shù)據(jù)完整性、查詢效率和應(yīng)用開(kāi)發(fā)難度等因素,以確保數(shù)據(jù)在不同數(shù)據(jù)庫(kù)管理系統(tǒng)之間的兼容性和一致性。
? 兼容項(xiàng):<字符集>
字符集是一種用來(lái)表示不同語(yǔ)言和字符的編碼規(guī)范。在數(shù)據(jù)庫(kù)中,字符集決定了數(shù)據(jù)如何存儲(chǔ)和顯示。不同的數(shù)據(jù)庫(kù)管理系統(tǒng)支持不同的字符集,例如MySQL支持utf8、utf8mb4等字符集,而Oracle支持AL32UTF8、AL16UTF16等字符集。在數(shù)據(jù)庫(kù)替換過(guò)程中進(jìn)行數(shù)據(jù)庫(kù)遷移或數(shù)據(jù)交換的時(shí)候,字符集兼容性就顯得非常重要。當(dāng)要將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)遷移到另一個(gè)數(shù)據(jù)庫(kù)時(shí),需要確保數(shù)據(jù)的字符集不會(huì)丟失或損壞,務(wù)必注意字符集的兼容性,以確保數(shù)據(jù)能夠正確地存儲(chǔ)和顯示。數(shù)據(jù)庫(kù)廠商應(yīng)明確自己兼容的數(shù)據(jù)庫(kù)類型,以及如何設(shè)置字符集,以方便用戶選擇和使用。
? 兼容項(xiàng):<SQL語(yǔ)法>
盡管 SQL 是一種標(biāo)準(zhǔn)化的查詢語(yǔ)言,但實(shí)際上不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)了自己的 SQL 語(yǔ)法擴(kuò)展和特性,導(dǎo)致其之間的 SQL 語(yǔ)法存在一定的差異。在進(jìn)行數(shù)據(jù)庫(kù)替換過(guò)程中,跨數(shù)據(jù)庫(kù)的開(kāi)發(fā)、遷移和數(shù)據(jù)交互等環(huán)節(jié),由于不同數(shù)據(jù)庫(kù)之間 SQL 語(yǔ)法的差異,會(huì)直接影響客戶的決策和項(xiàng)目周期。各數(shù)據(jù)庫(kù)廠商應(yīng)在兼容性部分盡可能的細(xì)化 SQL 語(yǔ)法的兼容性程度,以便研發(fā)和運(yùn)維管理人員做綜合的評(píng)估
? 兼容項(xiàng):<數(shù)據(jù)對(duì)象>
數(shù)據(jù)庫(kù)對(duì)象的兼容性在數(shù)據(jù)庫(kù)替換或遷移中起著至關(guān)重要的作用。當(dāng)需要將一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)替換成另一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)時(shí),數(shù)據(jù)庫(kù)對(duì)象的兼容性可以影響到替換過(guò)程的順利進(jìn)行以及數(shù)據(jù)的完整性和準(zhǔn)確性。以下是數(shù)據(jù)庫(kù)對(duì)象兼容性在數(shù)據(jù)庫(kù)替換中的作用:
- 數(shù)據(jù)遷移:在進(jìn)行數(shù)據(jù)庫(kù)替換時(shí),通常需要將原有數(shù)據(jù)庫(kù)中的數(shù)據(jù)遷移到新的數(shù)據(jù)庫(kù)系統(tǒng)中。如果數(shù)據(jù)庫(kù)對(duì)象之間的數(shù)據(jù)類型、存儲(chǔ)結(jié)構(gòu)、索引等不兼容,可能導(dǎo)致數(shù)據(jù)丟失、格式不正確或無(wú)法正確轉(zhuǎn)換的問(wèn)題。
- 存儲(chǔ)過(guò)程和觸發(fā)器:一些數(shù)據(jù)庫(kù)對(duì)象,如存儲(chǔ)過(guò)程和觸發(fā)器,可能是特定于某個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的特性。在進(jìn)行數(shù)據(jù)庫(kù)替換時(shí),需要確保新的數(shù)據(jù)庫(kù)系統(tǒng)能夠支持這些對(duì)象,并進(jìn)行相應(yīng)的遷移和調(diào)整。
- 數(shù)據(jù)一致性:數(shù)據(jù)庫(kù)對(duì)象的兼容性還涉及到數(shù)據(jù)的一致性和完整性。在數(shù)據(jù)庫(kù)替換過(guò)程中,需要確保數(shù)據(jù)庫(kù)對(duì)象的轉(zhuǎn)換和遷移不會(huì)造成數(shù)據(jù)錯(cuò)誤或丟失,以保持?jǐn)?shù)據(jù)的一致性。
- 性能影響:數(shù)據(jù)庫(kù)對(duì)象的兼容性還會(huì)影響到新數(shù)據(jù)庫(kù)系統(tǒng)的性能。如果數(shù)據(jù)庫(kù)對(duì)象的設(shè)計(jì)不符合新數(shù)據(jù)庫(kù)系統(tǒng)的最佳實(shí)踐或性能優(yōu)化策略,可能會(huì)造成性能下降或不穩(wěn)定。
? 兼容項(xiàng):<過(guò)程化語(yǔ)言>
數(shù)據(jù)庫(kù)過(guò)程化語(yǔ)言是一種用于編寫(xiě)存儲(chǔ)過(guò)程和觸發(fā)器等數(shù)據(jù)庫(kù)對(duì)象的編程語(yǔ)言。它是針對(duì)特定數(shù)據(jù)庫(kù)管理系統(tǒng)而設(shè)計(jì)的,以支持在數(shù)據(jù)庫(kù)中執(zhí)行復(fù)雜邏輯和業(yè)務(wù)規(guī)則的編程需求。通過(guò)數(shù)據(jù)庫(kù)過(guò)程化語(yǔ)言,用戶可以在數(shù)據(jù)庫(kù)中定義和執(zhí)行一系列的操作和邏輯,實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理和管理。在數(shù)據(jù)庫(kù)替換過(guò)程中,過(guò)程化語(yǔ)言的重要性主要體現(xiàn)在數(shù)據(jù)轉(zhuǎn)換、業(yè)務(wù)邏輯實(shí)現(xiàn)、數(shù)據(jù)一致性和完整性、性能優(yōu)化以及數(shù)據(jù)遷移邏輯控制等方面。通過(guò)合理地使用過(guò)程化語(yǔ)言,數(shù)據(jù)庫(kù)替換工作可以更有效地進(jìn)行,同時(shí)保證數(shù)據(jù)的完整性和業(yè)務(wù)規(guī)則的實(shí)現(xiàn)。
? 兼容項(xiàng):<內(nèi)置函數(shù)>
數(shù)據(jù)庫(kù)內(nèi)置函數(shù)是數(shù)據(jù)庫(kù)提供的一組用于處理數(shù)據(jù)和執(zhí)行特定操作的函數(shù)。這些內(nèi)置函數(shù)可以用于查詢、操作和處理數(shù)據(jù)庫(kù)中的數(shù)據(jù),簡(jiǎn)化開(kāi)發(fā)和提高查詢效率。不同的數(shù)據(jù)庫(kù)系統(tǒng)支持不同的內(nèi)置函數(shù),通常包括字符串函數(shù)、數(shù)值函數(shù)、日期函數(shù)、聚合函數(shù)等。同時(shí)數(shù)據(jù)庫(kù)內(nèi)置函數(shù)的使用可以簡(jiǎn)化數(shù)據(jù)處理過(guò)程,減少手動(dòng)編寫(xiě)復(fù)雜的邏輯代碼的工作量,提高開(kāi)發(fā)效率和代碼的可讀性。在編寫(xiě)SQL查詢語(yǔ)句或存儲(chǔ)過(guò)程時(shí),合理地使用數(shù)據(jù)庫(kù)內(nèi)置函數(shù)能夠更高效地實(shí)現(xiàn)各種數(shù)據(jù)處理和操作。如果數(shù)據(jù)庫(kù)替換后,原本使用的內(nèi)置函數(shù)在新的數(shù)據(jù)庫(kù)中不被支持或者功能有所改變,就會(huì)導(dǎo)致原有的數(shù)據(jù)庫(kù)操作無(wú)法正常進(jìn)行,甚至可能會(huì)導(dǎo)致數(shù)據(jù)丟失或錯(cuò)誤。因此,在進(jìn)行數(shù)據(jù)庫(kù)替換時(shí),需要仔細(xì)評(píng)估新數(shù)據(jù)庫(kù)對(duì)內(nèi)置函數(shù)的支持情況,確保原有的數(shù)據(jù)庫(kù)操作能夠在新數(shù)據(jù)庫(kù)中正常運(yùn)行。如果存在兼容性問(wèn)題,可能需要重新設(shè)計(jì)數(shù)據(jù)庫(kù)操作,或者尋找替代的內(nèi)置函數(shù)來(lái)實(shí)現(xiàn)相同的功能。保證數(shù)據(jù)庫(kù)內(nèi)置函數(shù)的兼容性對(duì)于保障數(shù)據(jù)庫(kù)操作的正常運(yùn)行和數(shù)據(jù)的完整性至關(guān)重要。
? 兼容項(xiàng):<系統(tǒng)視圖>
數(shù)據(jù)庫(kù)系統(tǒng)視圖是數(shù)據(jù)庫(kù)系統(tǒng)中的一種虛擬表,它是通過(guò)查詢一張或多張基本表生成的視圖。這些視圖可以幫助用戶簡(jiǎn)化復(fù)雜的查詢操作,隱藏?cái)?shù)據(jù)的復(fù)雜性,提供不同層次的數(shù)據(jù)訪問(wèn)權(quán)限,以及提供數(shù)據(jù)安全性。兼容數(shù)據(jù)庫(kù)的系統(tǒng)視圖可以有效地降低數(shù)據(jù)庫(kù)替換或升級(jí)過(guò)程中的風(fēng)險(xiǎn),保障原有數(shù)據(jù)和應(yīng)用的正常運(yùn)行。
? 兼容項(xiàng):<優(yōu)化器功能>
通過(guò)優(yōu)化器的功能,數(shù)據(jù)庫(kù)可以根據(jù)查詢的復(fù)雜度和特點(diǎn)生成最優(yōu)化的執(zhí)行計(jì)劃,從而提高查詢性能,降低系統(tǒng)資源的消耗,提升數(shù)據(jù)庫(kù)系統(tǒng)整體的性能表現(xiàn)。通過(guò)確保數(shù)據(jù)庫(kù)優(yōu)化器功能的兼容性,可以有效降低數(shù)據(jù)庫(kù)替換或升級(jí)帶來(lái)的風(fēng)險(xiǎn),并保障系統(tǒng)的性能和效率得到長(zhǎng)期維持和提升。
? 兼容項(xiàng):<安全特性>
數(shù)據(jù)庫(kù)安全特性是數(shù)據(jù)庫(kù)系統(tǒng)中用于保護(hù)數(shù)據(jù)安全的一系列功能和措施。這些特性旨在防止未經(jīng)授權(quán)的訪問(wèn)、數(shù)據(jù)泄露、數(shù)據(jù)損壞和其他安全威脅,確保數(shù)據(jù)庫(kù)系統(tǒng)的完整性、可用性和保密性。常見(jiàn)的數(shù)據(jù)庫(kù)安全特性:訪問(wèn)控制、數(shù)據(jù)加密、審計(jì)和監(jiān)控、數(shù)據(jù)完整性、數(shù)據(jù)備份和恢復(fù)、數(shù)據(jù)脫敏、異常檢測(cè)和防范。兼容原數(shù)據(jù)庫(kù)的安全特性可以幫助組織順利遷移或升級(jí)數(shù)據(jù)庫(kù)系統(tǒng),同時(shí)保持?jǐn)?shù)據(jù)的安全性和完整性。在進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)替換或升級(jí)之前,建議對(duì)數(shù)據(jù)庫(kù)安全特性進(jìn)行仔細(xì)評(píng)估和規(guī)劃,確保數(shù)據(jù)庫(kù)系統(tǒng)在安全方面的兼容性得到充分考慮。
? 兼容項(xiàng):<生態(tài)工具>
數(shù)據(jù)庫(kù)生態(tài)工具是指與數(shù)據(jù)庫(kù)系統(tǒng)相關(guān)的一系列軟件和工具,用于管理、監(jiān)控、優(yōu)化和擴(kuò)展數(shù)據(jù)庫(kù)系統(tǒng)的功能和性能。這些工具涵蓋了數(shù)據(jù)庫(kù)開(kāi)發(fā)、運(yùn)維、安全、備份恢復(fù)、性能調(diào)優(yōu)等不同領(lǐng)域,旨在幫助數(shù)據(jù)庫(kù)管理員和開(kāi)發(fā)人員更好地管理和利用數(shù)據(jù)庫(kù)系統(tǒng)。兼容原有數(shù)據(jù)庫(kù)的生態(tài)工具,可以大大降低用戶的學(xué)習(xí)成本,復(fù)用原有生態(tài)工具,可以減少用戶在數(shù)據(jù)庫(kù)生態(tài)方面的投入,降低用戶成本。
2. 各家數(shù)據(jù)庫(kù)兼容性能力說(shuō)明
(1)OceanBase
OceanBase 是在租戶級(jí)別提供對(duì)數(shù)據(jù)庫(kù)的兼容能力,即在一個(gè)系統(tǒng)中可同時(shí)支持 MySQL 模式和 Oracle 模式兩種模式的租戶。用戶在創(chuàng)建租戶時(shí),可選擇創(chuàng)建 MySQL 兼容模式的租戶或 Oracle 兼容模式的租戶,租戶的兼容模式一經(jīng)確定就無(wú)法更改,所有數(shù)據(jù)類型、SQL 功能、視圖等相應(yīng)地與 MySQL 數(shù)據(jù)庫(kù)或 Oracle 數(shù)據(jù)庫(kù)保持一致。
? Oracle 兼容性
OceanBase 數(shù)據(jù)庫(kù)從 V2.x.x 版本開(kāi)始支持 Oracle 兼容模式。Oracle 模式目前能夠支持絕大部分的 Oracle 語(yǔ)法和過(guò)程性語(yǔ)言功能,可以做到大部分的 Oracle 業(yè)務(wù)進(jìn)行少量修改后的自動(dòng)遷移。OceanBase 數(shù)據(jù)庫(kù)在數(shù)據(jù)類型、SQL 功能和數(shù)據(jù)庫(kù)對(duì)象等基本功能上與 Oracle 數(shù)據(jù)庫(kù)兼容。在過(guò)程化程序語(yǔ)言(Procedural Language,PL)方面,已經(jīng)基本能夠兼容全部的研發(fā)功能。在數(shù)據(jù)庫(kù)安全、備份恢復(fù)、高可用和優(yōu)化器等高級(jí)特性上 OceanBase 數(shù)據(jù)庫(kù)的兼容性也非常好,而且有些特性還要優(yōu)于 Oracle 數(shù)據(jù)庫(kù)。這意味著在從 Oracle 數(shù)據(jù)庫(kù)遷移到 OceanBase 數(shù)據(jù)庫(kù)的過(guò)程中,用戶不需要消耗大量的時(shí)間去學(xué)習(xí)新知識(shí),即可流暢地實(shí)現(xiàn)從 Oracle 數(shù)據(jù)庫(kù)到 OceanBase 數(shù)據(jù)庫(kù)的遷移。
? MySQL 兼容性
MySQL 模式是為降低 MySQL 數(shù)據(jù)庫(kù)遷移至 OceanBase 數(shù)據(jù)庫(kù)所引發(fā)的業(yè)務(wù)系統(tǒng)改造成本,同時(shí)使業(yè)務(wù)數(shù)據(jù)庫(kù)設(shè)計(jì)人員、開(kāi)發(fā)人員、數(shù)據(jù)庫(kù)管理員等可復(fù)用積累的 MySQL 數(shù)據(jù)庫(kù)技術(shù)知識(shí)經(jīng)驗(yàn),并能快速上手 OceanBase 數(shù)據(jù)庫(kù)而支持的一種租戶類型功能。OceanBase 數(shù)據(jù)庫(kù)的 MySQL 模式兼容 MySQL 5.7 的絕大部分功能和語(yǔ)法,兼容 MySQL 5.7 版本的全量以及 8.0 版本的部分 JSON 函數(shù),基于 MySQL 的應(yīng)用能夠平滑遷移。
? 評(píng)估+遷移工具
OceanBase 遷移評(píng)估工具(OceanBase Migration Assessment,OMA)是 OceanBase 提供的數(shù)據(jù)庫(kù)遷移評(píng)估的產(chǎn)品,為數(shù)據(jù)遷移提供精準(zhǔn)的兼容性評(píng)估、高效的性能評(píng)估以及應(yīng)用邏輯改造建議。OMA 支持評(píng)估 Oracle、DB2 LUW、PostgreSQL 等多種數(shù)據(jù)庫(kù)與 OceanBase 的兼容情況,提供畫(huà)像分析和自動(dòng)轉(zhuǎn)換方案;支持應(yīng)用負(fù)載回放功能,幫助客戶預(yù)知遷移后可能的性能風(fēng)險(xiǎn)并提供優(yōu)化方案;OMA 還支持評(píng)估 C、Java 業(yè)務(wù)代碼以及驅(qū)動(dòng)的兼容性以助力用戶高效率、低成本遷移至OceanBase。
OceanBase 數(shù)據(jù)遷移工具(OceanBase Migration Service,OMS)是 OceanBase 數(shù)據(jù)庫(kù)一站式數(shù)據(jù)傳輸和同步的產(chǎn)品。它支持多種關(guān)系型數(shù)據(jù)庫(kù)、消息隊(duì)列與 OceanBase 數(shù)據(jù)庫(kù)之間的數(shù)據(jù)復(fù)制,是集數(shù)據(jù)遷移、實(shí)時(shí)數(shù)據(jù)同步和增量數(shù)據(jù)訂閱于一體的數(shù)據(jù)傳輸服務(wù),OMS 幫助您低風(fēng)險(xiǎn)、低成本、高效率的實(shí)現(xiàn) OceanBase 的數(shù)據(jù)流通,助力構(gòu)建安全、穩(wěn)定、高效的數(shù)據(jù)復(fù)制架構(gòu)。
(2)GoldenDB
GoldenDB 數(shù)據(jù)庫(kù)提供了對(duì) Oracle、MySQL 的兼容能力。
? Oracle 兼容性
GoldenDB 分布式數(shù)據(jù)庫(kù)兼容 SQL92、99、2003SQL標(biāo)準(zhǔn),同時(shí)兼容常用 Oracle 語(yǔ)法,其支持的語(yǔ)法類別全面覆蓋數(shù)據(jù)庫(kù)語(yǔ)法類別,包括DDL、DML、DQL等等。同時(shí),GoldenDB對(duì)跨節(jié)點(diǎn)的復(fù)雜 SQL 操作支持全面,使得業(yè)務(wù)人員的開(kāi)發(fā)工作量大幅降低,無(wú)需考慮大量的SQL改造。
? MySQL 兼容性
GoldenDB 分布式數(shù)據(jù)庫(kù)完全兼容 MySQL 語(yǔ)法,兼容SQL92、99、2003SQL標(biāo)準(zhǔn),其支持的語(yǔ)法類別全面覆蓋數(shù)據(jù)庫(kù)語(yǔ)法類別,包括DDL、DML、DQL等等。
? 遷移工具
GoldenDB數(shù)據(jù)遷移工具SLOTH,完成 GoldenDB 數(shù)據(jù)庫(kù)與GoldenDB(包括不同的分片數(shù)量場(chǎng)景)、異構(gòu)數(shù)據(jù)庫(kù)(Oracle、MySQL等)之間的全量數(shù)據(jù)、增量數(shù)據(jù)的遷移和同步,同時(shí)提供遷移過(guò)程中的數(shù)據(jù)比對(duì)功能。
(3)GaussDB
? MultiDB 兼容
GaussDB 是華為自主創(chuàng)新研發(fā)的分布式關(guān)系型數(shù)據(jù)庫(kù)。GaussDB 可以在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),通過(guò)參數(shù) DBCOMPATIBILITY 指定兼容數(shù)據(jù)庫(kù)的類型,支持 A、B、C和PG四種兼容模式,分別表示兼容 Oracle、MySQL、Teradata(TD)和PostgreSQL。但是C目前已經(jīng)放棄支持,因此常用的取值是A、B、PG。不同兼容模式下的語(yǔ)法行為存在一定差異,默認(rèn)為A兼容模式。此外,為了適配 MySQL 語(yǔ)句及pymysql、JDBC等多種連接方式,GaussDB新增了 M-Compatibility 協(xié)議,簡(jiǎn)稱為M-Compatibility兼容模式。
? 評(píng)估+遷移工具
UGO,全稱為數(shù)據(jù)庫(kù)和應(yīng)用遷移 UGO,是專注于異構(gòu)數(shù)據(jù)庫(kù)結(jié)構(gòu)遷移的專業(yè)服務(wù)??蓪⒃磾?shù)據(jù)庫(kù)中的DDL、DML和DCL一鍵自動(dòng)轉(zhuǎn)換為華為云GaussDB/RDS的SQL語(yǔ)法,通過(guò)數(shù)據(jù)庫(kù)評(píng)估、對(duì)象遷移兩大核心功能和自動(dòng)化語(yǔ)法轉(zhuǎn)換,提前識(shí)別可能存在的改造工作、提高轉(zhuǎn)化率、最大化降低用戶數(shù)據(jù)庫(kù)遷移成本。在異構(gòu)數(shù)據(jù)庫(kù)遷移場(chǎng)景中,UGO實(shí)現(xiàn)結(jié)構(gòu)遷移和語(yǔ)法轉(zhuǎn)化,數(shù)據(jù)復(fù)制服務(wù) DRS實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)在線搬遷,可以形成完整的平滑異構(gòu)數(shù)據(jù)庫(kù)端到端搬遷方案。
(4)TDSQL
TDSQL,是騰訊云提供的一個(gè)數(shù)據(jù)庫(kù)品牌,包含多個(gè)產(chǎn)品。按照其生態(tài)兼容,主要是兩款 TDSQL-MySQL、TDSQL-PG。
? MySQL 兼容性
TDSQL MySQL版(TDSQL for MySQL)是部署在騰訊云上的一種支持自動(dòng)水平拆分、Shared Nothing 架構(gòu)的分布式數(shù)據(jù)庫(kù)。TDSQL-MySQL 高度兼容 MySQL 的協(xié)議和語(yǔ)法,但由于架構(gòu)的差異,對(duì)于 SQL 有一定的限制。
? PostgreSQL 兼容性
TDSQL PostgreSQL版(TDSQL for PostgreSQL)是騰訊自主研發(fā)的分布式數(shù)據(jù)庫(kù)系統(tǒng)。TDSQL PostgreSQL版 集高擴(kuò)展性、SQL 高兼容度、完整的分布式事務(wù)支持、多級(jí)容災(zāi)及多維度資源隔離等功能于一身,采用無(wú)共享的集群架構(gòu),提供容災(zāi)、備份、恢復(fù)、監(jiān)控、安全、審計(jì)等全套解決方案,適用于GB級(jí) - PB級(jí)的海量 HTAP 場(chǎng)景。TDSQL PostgreSQL版 完全兼容 PostgreSQL。
? Oracle 兼容性
TDSQL PostgreSQL版 正式孵化出 Oracle 兼容版,即 TDSQL PostgreSQL版(Oracle 兼容版),該版本高度兼容 Oracle 語(yǔ)法,包含數(shù)據(jù)類型與運(yùn)算符、分區(qū)表、系統(tǒng)內(nèi)置包、系統(tǒng)視圖、函數(shù)、存儲(chǔ)過(guò)程、PL/SQL 等語(yǔ)法的兼容。
(5)PolarDB
PolarDB,是阿里云提供的一個(gè)數(shù)據(jù)庫(kù)品牌,包含多個(gè)產(chǎn)品。按照其生態(tài)兼容,主要是兩款 PolarDB-MySQL、PolarDB-PG。這里吐槽一下,PolarDB 產(chǎn)品在文檔方面還需加強(qiáng),關(guān)于兼容性很多內(nèi)容都查不到。
? MySQL 兼容性
PolarDB MySQL 版是阿里巴巴自研的云原生HTAP數(shù)據(jù)庫(kù)。PolarDB MySQL版100%兼容原生MySQL的多個(gè)版本,包括MySQL 5.6、MySQL 5.7和MySQL 8.0。PolarDB MySQL版的企業(yè)版基于云原生架構(gòu)、計(jì)算存儲(chǔ)分離、軟硬件一體化設(shè)計(jì),為用戶提供具備超高彈性和性能、高可用和高可靠保障、高性價(jià)比的數(shù)據(jù)庫(kù)服務(wù)。
? PostgreSQL 兼容性
PolarDB-PG 是阿里巴巴自研的新一代云原生數(shù)據(jù)庫(kù),在存儲(chǔ)計(jì)算分離架構(gòu)下,利用了軟硬件結(jié)合的優(yōu)勢(shì),為用戶提供具備極致彈性、高性能、海量存儲(chǔ)、安全可靠的數(shù)據(jù)庫(kù)服務(wù)。PolarDB 100%兼容PostgreSQL 11,PostgreSQL 14,高度兼容Oracle。
? Oracle 兼容性
PolarDB是阿里巴巴自研的新一代云原生數(shù)據(jù)庫(kù),在存儲(chǔ)計(jì)算分離架構(gòu)下,利用了軟硬件結(jié)合的優(yōu)勢(shì),為用戶提供具備極致彈性、高性能、海量存儲(chǔ)、安全可靠的數(shù)據(jù)庫(kù)服務(wù)。高度兼容Oracle。
? 評(píng)估+遷移工具
異構(gòu)數(shù)據(jù)庫(kù)遷移ADAM(Advanced Database & Application Migration)提供數(shù)據(jù)庫(kù)平滑遷云解決方案,全面評(píng)估上云可行性、成本和云存儲(chǔ)選型,內(nèi)置實(shí)施協(xié)助、數(shù)據(jù)遷移、應(yīng)用遷移等工具,覆蓋數(shù)據(jù)庫(kù)遷移的全生命周期,幫助企業(yè)降低數(shù)據(jù)庫(kù)和應(yīng)用遷移的風(fēng)險(xiǎn)、技術(shù)難度和實(shí)施周期,助力企業(yè)源數(shù)據(jù)庫(kù)遷移上云。數(shù)據(jù)傳輸服務(wù)DTS(Data Transmission Service)是阿里云提供的實(shí)時(shí)數(shù)據(jù)流服務(wù),支持關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)、非關(guān)系型的數(shù)據(jù)庫(kù)(NoSQL)、數(shù)據(jù)多維分析(OLAP)等數(shù)據(jù)源間的數(shù)據(jù)交互,集數(shù)據(jù)同步、遷移、訂閱、集成、加工于一體,助您構(gòu)建安全、可擴(kuò)展、高可用的數(shù)據(jù)架構(gòu)。
(6)TiDB
? MySQL 兼容性
TiDB 高度兼容 MySQL 協(xié)議,以及 MySQL 5.7 和 MySQL 8.0 常用的功能及語(yǔ)法。MySQL 生態(tài)中的系統(tǒng)工具(PHPMyAdmin、Navicat、MySQL Workbench、DBeaver 和其他工具)、客戶端等均適用于 TiDB。
? 遷移工具
TiDB Data Migration (DM) 是將 MySQL/MariaDB 數(shù)據(jù)遷移到 TiDB 的工具,支持全量數(shù)據(jù)的遷移和增量數(shù)據(jù)的復(fù)制。
(7)GreatDB
? MySQL + Oracle 兼容性
GreatDB 是北京萬(wàn)里開(kāi)源軟件有限公司自主研發(fā)的一款分布式關(guān)系型數(shù)據(jù)庫(kù)軟件。GreatDB完全兼容 MySQL 語(yǔ)法,兼容 SQL92、99、2003 SQL 標(biāo)準(zhǔn),同時(shí)兼容部分 Oracle 語(yǔ)法,其支持的語(yǔ)法類別全面覆蓋數(shù)據(jù)庫(kù)語(yǔ)法類別,包括DDL、DML、DDL、TCL、常用函數(shù)、程序控制語(yǔ)言、批處理語(yǔ)法、序列等。
? 評(píng)估+遷移工具
GreatDTS 是萬(wàn)里數(shù)據(jù)庫(kù)自主研發(fā)的數(shù)據(jù)庫(kù)遷移工具,方便用戶遷移其他數(shù)據(jù)庫(kù)到GreatDB 數(shù)據(jù)庫(kù),實(shí)現(xiàn)應(yīng)用評(píng)估、兼容性評(píng)估和數(shù)據(jù)遷移的一站式數(shù)據(jù)遷移產(chǎn)品,服務(wù)全量數(shù)據(jù)遷移,支持并行執(zhí)行、斷點(diǎn)續(xù)傳和數(shù)據(jù)校驗(yàn)等功能。
(8)KingBase
? Oracle 兼容性
KingbaseES在其內(nèi)部實(shí)現(xiàn)了大量的Oracle兼容特性 。這些特性 從語(yǔ)法或功能上對(duì)Oracle提供了原生支持。因此,在移植過(guò)程中,Oracle程序只需很少甚至不做任何改動(dòng)就能在KingbaseES環(huán)境中運(yùn)行。
? MySQL 兼容性
異構(gòu)數(shù)據(jù)庫(kù)移植的工作量繁重。這些工作量主要來(lái)源于:在數(shù)據(jù)類型、SQL 語(yǔ)言、PL/SQL 語(yǔ)言、甚至客戶端應(yīng)用編程接口等諸多方面對(duì)兩個(gè)數(shù)據(jù)庫(kù)所進(jìn)行的、大量的語(yǔ)法或功能的對(duì)齊處理。同樣的,從 MySQL 向 KingbasES 移植的情況也如此。為降低移植工作量,KingbaseES 在其內(nèi)部實(shí)現(xiàn)了部分的 MySQL 兼容特性。這些特性從語(yǔ)法或功能上對(duì) MySQL 提供了原生支持。因此,在移植過(guò)程中,MySQL 程序只需很少甚至不做任何改動(dòng)就能在 KES 環(huán)境中運(yùn)行。
? 遷移工具
KingbaseES 提供了 KDTS 和 KFS 2個(gè)工具完成遷移數(shù)據(jù)任務(wù)。KDTS 是 KingbaseES 提供的工具,可以用于離線遷移,并完成數(shù)據(jù)庫(kù)中所有對(duì)象定義的遷移和數(shù)據(jù)的遷移。KFS 是一個(gè)單獨(dú)的同步工具,可以應(yīng)用于數(shù)據(jù)的同步,主要用于表結(jié)構(gòu)和表數(shù)據(jù)的初始搬遷,以及初始搬遷之后數(shù)據(jù)的實(shí)時(shí)同步。KDTS 和 KFS 一起部署,可以完成一個(gè)大型系統(tǒng)的在線遷移。
(9)DM
之前一直聽(tīng)說(shuō) DM 對(duì) Oracle 的兼容性是比較好的,但在查看文檔中發(fā)現(xiàn)資料甚少,只是提到了提供兼容模式及從其他數(shù)據(jù)庫(kù)遷移方面的一些經(jīng)驗(yàn)??磥?lái)文檔方面,還需要多多增強(qiáng)。
? MultiDB 兼容性
DM 提供了 COMPATIBLE_MODE 參數(shù)來(lái)設(shè)置數(shù)據(jù)庫(kù)的兼容性模式,0:不兼容,1:兼容 SQL92 標(biāo)準(zhǔn),2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL, 5:兼容 DM6,6:部分兼容 TERADATA。該參數(shù)默認(rèn)為 0。該參數(shù)為靜態(tài)參數(shù),需要重啟數(shù)據(jù)庫(kù)后生效。
? 遷移工具
DM 數(shù)據(jù)遷移工具 DM DTS 提供了主流大型數(shù)據(jù)庫(kù)遷移到 DM、DM 到 DM、文件遷移到 DM 以及 DM 遷移到文件等功能。此外,這個(gè)工具也可以完成對(duì)象的遷移,但各數(shù)據(jù)庫(kù)語(yǔ)法兼容程度不同,部分是需要手工改寫(xiě)。
(10)GBase
? Oracle 兼容性
南大通用有多款數(shù)據(jù)庫(kù)產(chǎn)品,以 GBase 8s 為例,其廣泛兼容 Oracle 語(yǔ)法,在 PL/SQL、包、系統(tǒng)函數(shù)、系統(tǒng)視圖、DML 語(yǔ)句、DDL 語(yǔ)句、數(shù)據(jù)類型、操作符等方面都有良好的兼容性,最大限度的復(fù)用用戶和開(kāi)發(fā)人員的數(shù)據(jù)庫(kù)經(jīng)驗(yàn),降低產(chǎn)品使用門(mén)檻。
? 遷移工具
同步提供了數(shù)據(jù)庫(kù)遷移工具。
(11)AntDB
? Oracle 兼容性
AntDB 是一款可擴(kuò)展、多租戶、高可用、高性能、國(guó)產(chǎn)自主的分布式數(shù)據(jù)庫(kù)產(chǎn)品,旨在為 OLTP (Online Transactional Processing)、 OLAP (Online Analytical Processing)場(chǎng)景提供一站式的解決方案,具備自動(dòng)高可用、在線彈性擴(kuò)容、內(nèi)核級(jí)讀寫(xiě)分離等特性,支持SQL2016 標(biāo)準(zhǔn),提供高并發(fā)、高吞吐、低時(shí)延的PB級(jí)數(shù)據(jù)處理能力,方便應(yīng)用平滑地從 Oracle 遷移到 AntDB。
? 評(píng)估+遷移工具
AntDB MTK(AntDB Migration ToolKits)是安慧科技精心打造的一款高可用、高性能的分布式數(shù)據(jù)同步復(fù)制產(chǎn)品, 可以在同構(gòu)、異構(gòu)數(shù)據(jù)庫(kù)之間進(jìn)行遷移評(píng)估、離線遷移、數(shù)據(jù)校驗(yàn)的能力。MTK使用斷點(diǎn)續(xù)傳技術(shù),具有部署簡(jiǎn)單、 占用資源少、數(shù)據(jù)零丟失等技術(shù)特點(diǎn)。在兼容性評(píng)估功能方面,提供整體數(shù)據(jù)庫(kù)層面的兼容度分析,通過(guò)自動(dòng)化的數(shù)據(jù)采集,并在真實(shí)環(huán)境中進(jìn)行模擬重演,得出準(zhǔn)確的兼容度分析報(bào)告??蓪⒃磾?shù)據(jù)庫(kù)中的DDL、DML、DCL一鍵自動(dòng)轉(zhuǎn)換為AntDB的SQL語(yǔ)法,通過(guò)對(duì)象評(píng)估、SQL評(píng)估和自動(dòng)化語(yǔ)法轉(zhuǎn)換,提前識(shí)別可能存在的改造工作、提高轉(zhuǎn)換率、最大化降低用戶數(shù)據(jù)庫(kù)遷移成本。AntDB MTK負(fù)責(zé)數(shù)據(jù)庫(kù)之間的復(fù)制同步,支持Oracle,MySQL,PostgreSQL, AntDB等各種數(shù)據(jù)庫(kù)產(chǎn)品數(shù)據(jù)復(fù)制同步,實(shí)現(xiàn)可預(yù)期、 高效率地進(jìn)行數(shù)據(jù)庫(kù)遷移實(shí)施。
(12)YanshanDB
? Oracle 兼容性
YashanDB在SQL語(yǔ)法、表達(dá)式運(yùn)算、FILTER CONDITION、數(shù)據(jù)類型、內(nèi)置函數(shù)、系統(tǒng)視圖和PL等基本功能上均與Oracle數(shù)據(jù)庫(kù)兼容,數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)人員不需要花費(fèi)大量的時(shí)間去學(xué)習(xí)新知識(shí),在已交付特性上直接查閱Oracle相關(guān)文檔,也可流暢地操作使用YashanDB,實(shí)現(xiàn)從Oracle數(shù)據(jù)庫(kù)到Y(jié)ashanDB的平滑遷移。
? 評(píng)估+遷移工具
崖山遷移平臺(tái)(YashanDB Migration Platform,YMP)是YashanDB提供的數(shù)據(jù)庫(kù)遷移產(chǎn)品,提供異構(gòu)RDBMS與YashanDB之間進(jìn)行遷移評(píng)估、離線遷移、數(shù)據(jù)校驗(yàn)的能力。YMP提供可視化服務(wù),用戶只需通過(guò)簡(jiǎn)單的界面操作,即可完成從評(píng)估到遷移整個(gè)流程的執(zhí)行與監(jiān)控,實(shí)現(xiàn)低門(mén)檻、低成本、高效率的異構(gòu)數(shù)據(jù)庫(kù)遷移。
(13)Klustron
? MySQL+PG 兼容性
Klustron 同時(shí)支持 MySQL 和 PostgreSQL 兩種數(shù)據(jù)庫(kù)的連接協(xié)議和 SQL 語(yǔ)法,可以無(wú)縫對(duì)接 MySQL 和PostgreSQL 這兩大世界頂級(jí)開(kāi)源數(shù)據(jù)庫(kù)生態(tài)。Klustron 支持所有常見(jiàn)編程語(yǔ)言的 MySQL 和 PostgreSQL 客戶端連接庫(kù),用這些編程語(yǔ)言編寫(xiě)的軟件都可以連接到 Klustron 并正確執(zhí)行所有符合SQL 標(biāo)準(zhǔn)的 SQL 語(yǔ)句,以及 MySQL和 PostgreSQL 私有的 DML SQL 語(yǔ)句。相應(yīng)的數(shù)據(jù)遷移工作也可以借助 Klustron 和第三方的數(shù)據(jù)導(dǎo)入工具一鍵完成。
? 遷移工具
針對(duì)MySQL和PostgreSQL數(shù)據(jù)庫(kù),提供了全量+增量的遷移工具。
(14)HaloDB
? MultiDB 兼容性
HaloDB可以通過(guò)一款數(shù)據(jù)庫(kù)設(shè)置不同的兼容模式,如此優(yōu)異的特性得益于 HaloDB 的多模式兼容引擎,HaloDB 數(shù)據(jù)庫(kù)具有獨(dú)有的多模解析引擎技術(shù),可以兼容 PostgreSQL、Oracle、Sybase、MySQL、SQL Server、DB2 等主流數(shù)據(jù)庫(kù)語(yǔ)法從而大幅減少遷移項(xiàng)目中的代碼修改量。HaloDB 通過(guò)參數(shù) database_compat_mode,表示數(shù)據(jù)庫(kù)運(yùn)行模式。默認(rèn)值為 postgresql,其它可取值包括 oracle 、mysql、sybase、sqlserver、db2 等。其中部分?jǐn)?shù)據(jù)庫(kù),如MySQL,還提供了協(xié)議方面的支持。