數(shù)據(jù)庫(kù)國(guó)產(chǎn)化怎么換,你學(xué)會(huì)了嗎?
?昨天有朋友留言問(wèn),如果要更換國(guó)產(chǎn)化數(shù)據(jù)庫(kù),我們?cè)撛趺磽Q呢?這個(gè)問(wèn)題確實(shí)不好回答,因?yàn)椴煌膽?yīng)用特點(diǎn)、不同的預(yù)算規(guī)模、不同的運(yùn)維水平,這些差異都會(huì)導(dǎo)致企業(yè)要更換數(shù)據(jù)庫(kù),都會(huì)面臨不同的難點(diǎn)。這實(shí)際上是其中的一部分原因,真正的原因是一個(gè)我們做數(shù)據(jù)庫(kù)國(guó)產(chǎn)化替代都必須面對(duì)的問(wèn)題,那就是我們要更換的數(shù)據(jù)庫(kù)產(chǎn)品與Oracle比起來(lái),在成熟度、功能、性能、可靠性等方面都存在差距,并且在某些方面的差距還真的不小。這就是為什么有些企業(yè)說(shuō)替換Oracle很輕松,而有些企業(yè)則覺得困難異常。
因?yàn)楦鼡Q數(shù)據(jù)庫(kù)比較麻煩,也比較困難,所以哪怕是去IOE運(yùn)動(dòng)轟轟烈烈的時(shí)候,大部分企業(yè)也只是去了IE,而這個(gè)O依然是巋然不動(dòng)。不過(guò)現(xiàn)在面臨不管如何都必須更換數(shù)據(jù)庫(kù)的問(wèn)題,那么我們?cè)摬扇≡鯓拥母鼡Q策略呢?
對(duì)于一些IT規(guī)模不是很大,信息化應(yīng)用相對(duì)比較簡(jiǎn)單的企業(yè),數(shù)據(jù)庫(kù)國(guó)產(chǎn)化替代實(shí)際上技術(shù)上沒(méi)有太大的問(wèn)題,最主要是實(shí)施方法的問(wèn)題了。如何更好,更平穩(wěn)的替換數(shù)據(jù)庫(kù)是其中的關(guān)鍵。在今年實(shí)際上金融等行業(yè)在辦公自動(dòng)化等應(yīng)用上已經(jīng)開展了國(guó)產(chǎn)數(shù)據(jù)庫(kù)替代工作,泛微、藍(lán)凌等國(guó)產(chǎn)OA系統(tǒng)已經(jīng)在全國(guó)產(chǎn)平臺(tái)上做了大量的替代工作。通過(guò)咨詢這些企業(yè)可以看出,他們的OA系統(tǒng)主要是選擇了國(guó)家認(rèn)可的國(guó)產(chǎn)化數(shù)據(jù)庫(kù)平臺(tái),并且重點(diǎn)選擇了與Oracle兼容性較好的集中式數(shù)據(jù)庫(kù),比如達(dá)夢(mèng)、人大金倉(cāng)等。在大量的替換案例中,國(guó)產(chǎn)OA軟件廠商已經(jīng)對(duì)這些全國(guó)產(chǎn)平臺(tái)從服務(wù)器到操作系統(tǒng)到數(shù)據(jù)庫(kù)都做了全面的適配與優(yōu)化,目前都是能夠跑的比較平穩(wěn)的。一些技術(shù)能力較弱的企業(yè),在國(guó)產(chǎn)數(shù)據(jù)庫(kù)替代上,也可以考慮先從OA等系統(tǒng)開始替換,積累經(jīng)驗(yàn),最后做出更加合理的選擇。
不過(guò)國(guó)產(chǎn)數(shù)據(jù)庫(kù)替換工作并不是如此簡(jiǎn)單的事情,很多企業(yè)有著更為復(fù)雜,規(guī)模更大,性能和可靠性要求更高的核心業(yè)務(wù)系統(tǒng),因此他們的選擇往往更為謹(jǐn)慎。這種企業(yè)自己的IT規(guī)模較大,IT能力也較強(qiáng),因此完全可以通過(guò)自己的測(cè)試,找出一款與自己的業(yè)務(wù)特點(diǎn)比較吻合的系統(tǒng)來(lái)。我曾經(jīng)問(wèn)過(guò)一個(gè)大型的運(yùn)營(yíng)商客戶,他們是否在考慮國(guó)產(chǎn)數(shù)據(jù)庫(kù)替代的問(wèn)題,他回答我說(shuō),以他們的技術(shù)能力,在需要替代的時(shí)候,馬上就可以開展替代工作,這是他們技術(shù)完全可以支撐的。當(dāng)然也不是所有的企業(yè)都有這種能力與信心,因此開展測(cè)試是目前在大型企業(yè)中普遍采用的方法。只不過(guò)有些企業(yè)采用的測(cè)試方法并不一定能夠替你找到正確的選項(xiàng)。
目前數(shù)據(jù)庫(kù)的種類很多,雖然對(duì)外接口上要么兼容Oracle,要么兼容MYSQL,或者說(shuō)和PG差不多,不過(guò)其后面的架構(gòu)、存儲(chǔ)引擎等各不相同,在技術(shù)上也存在一些優(yōu)缺點(diǎn)。如果我們僅僅使用TPCC/TPCH等比較通用的測(cè)試工具去做測(cè)試對(duì)比,那么我們可能最終會(huì)盲人摸象一樣瞎選一通。這些測(cè)試工具對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),其測(cè)試場(chǎng)景都太簡(jiǎn)單了,很難測(cè)試到一些我們今后面臨的十分頭痛的問(wèn)題。
昨天在微信群里,有個(gè)朋友問(wèn)如何做OCEANBASE和TDSQL的對(duì)比測(cè)試。面對(duì)這兩種分布式數(shù)據(jù)庫(kù),可能有些朋友會(huì)覺得二者都是高度兼容MYSQL語(yǔ)法的數(shù)據(jù)庫(kù)產(chǎn)品,也都是分布式數(shù)據(jù)庫(kù),那么二者是不是很相似?實(shí)際上并不是的,如果你的測(cè)試場(chǎng)景復(fù)雜一點(diǎn),那么你肯定會(huì)發(fā)現(xiàn)二者的差異十分大。我建議這個(gè)朋友找自己業(yè)務(wù)中的一些比較復(fù)雜的場(chǎng)景去測(cè)試一下,一定要覆蓋到大并發(fā)簡(jiǎn)單查詢、超多表(7、8張大表甚至更多)復(fù)雜關(guān)聯(lián)、大數(shù)據(jù)量輸出(一次性返回?cái)?shù)百萬(wàn)甚至更多數(shù)據(jù))、超大型事務(wù)(一次性修改數(shù)百萬(wàn)甚至數(shù)千萬(wàn)條數(shù)據(jù),在數(shù)據(jù)維護(hù)升級(jí)的時(shí)候,我們經(jīng)常會(huì)用到)、大批量數(shù)據(jù)刪除操作、兩張大表的復(fù)雜HASH JOIN場(chǎng)景等這些比較復(fù)雜的場(chǎng)景。對(duì)于分布式數(shù)據(jù)庫(kù)來(lái)說(shuō),大數(shù)據(jù)量載入的能力一般都不錯(cuò),也都?jí)蛴?,因此測(cè)不測(cè)問(wèn)題都不是很大。如果企業(yè)中有ERP/SCM等系統(tǒng),用這些系統(tǒng)的數(shù)據(jù)和SQL做測(cè)試應(yīng)該是最具有挑戰(zhàn)性的。如果這些系統(tǒng)的復(fù)雜場(chǎng)景都能適用,那么這個(gè)數(shù)據(jù)庫(kù)基本上能夠覆蓋你的企業(yè)應(yīng)用了。
當(dāng)然數(shù)據(jù)庫(kù)選項(xiàng)并不一定都是從性能上的考慮,每個(gè)企業(yè)都有著自己的特點(diǎn)。總體使用成本是一個(gè)企業(yè)在數(shù)據(jù)庫(kù)選型時(shí)必須考慮的問(wèn)題。如果企業(yè)的應(yīng)用系統(tǒng)大多數(shù)都是Oracle數(shù)據(jù)庫(kù)的,很多系統(tǒng)比較老,遷移時(shí)希望應(yīng)用改造盡可能少,那么選擇與Oracle數(shù)據(jù)庫(kù)兼容性較好的數(shù)據(jù)庫(kù)產(chǎn)品是十分合理的選擇。我們可以選擇達(dá)夢(mèng)、金倉(cāng)、神通、海量等與Oracle兼容性較好的集中式,也可以選擇OceanBase、Polardb-O等分布式數(shù)據(jù)庫(kù)。
如果你的企業(yè)中大量使用MySQL并且在MySQL生態(tài)中已經(jīng)投入了大量的資金,今后也準(zhǔn)備主要以MySQL生態(tài)構(gòu)建自己的國(guó)產(chǎn)數(shù)據(jù)庫(kù)體系,那么目前也有很多選擇。愛可生、萬(wàn)里開源、TiDB、OceanBase、HotDB、星環(huán)KunDB、中興通訊GoldenDB、騰訊TDSQL等等一系列數(shù)據(jù)庫(kù)產(chǎn)品都是可以考慮的選項(xiàng)。如果你的企業(yè)中還有一些數(shù)據(jù)庫(kù)是Oracle,想盡可能少改動(dòng)的遷移過(guò)來(lái),那么選擇Oceanbase可能是比較好的選擇,因?yàn)镺ceanbase有MySQL/Oracle兩種兼容租戶,MySQL租戶與Mysql完全兼容,Oracle租戶兼容95%以上的SQL與PL/SQL。
如果你的企業(yè)使用大量的Postgresql系列開源數(shù)據(jù)庫(kù),而且也希望繼續(xù)使用下去。那么在做數(shù)據(jù)庫(kù)替換的時(shí)候,選擇PG兼容的數(shù)據(jù)庫(kù)會(huì)比較好。實(shí)際上目前國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品里,很多都是基于PG開源代碼開發(fā)的,再加上openGauss雖然是獨(dú)立的開源數(shù)據(jù)庫(kù)產(chǎn)品,已經(jīng)與PG社區(qū)版本脫離,但是其基礎(chǔ)還是PG數(shù)據(jù)庫(kù),在兼容性上也是十分強(qiáng)的。國(guó)產(chǎn)數(shù)據(jù)庫(kù)中,人大金倉(cāng)、瀚高、優(yōu)璇等都是基于PG代碼研發(fā)的國(guó)產(chǎn)數(shù)據(jù)庫(kù),MogDB、海量、神通等數(shù)據(jù)庫(kù)產(chǎn)品都是基于openGauss開源項(xiàng)目的。
當(dāng)然,對(duì)于很多企業(yè)來(lái)說(shuō),數(shù)據(jù)庫(kù)替換的投資也十分大,因此在選擇數(shù)據(jù)庫(kù)上還有一個(gè)經(jīng)濟(jì)性的考慮。如果企業(yè)中的數(shù)據(jù)庫(kù)規(guī)模十分龐大,那么我建議盡可能選擇生態(tài)中既有開源又有商用版本的數(shù)據(jù)庫(kù)產(chǎn)品,從而節(jié)約總體投資。
另外一個(gè)需要考慮的因素是運(yùn)維和售后服務(wù)問(wèn)題,昨天我的文中已經(jīng)說(shuō)了,目前國(guó)產(chǎn)數(shù)據(jù)庫(kù)的運(yùn)維服務(wù)生態(tài)還比較薄弱,因此運(yùn)維問(wèn)題也必須考慮。選擇與開源產(chǎn)品較為兼容的國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品,今后在運(yùn)維支撐方面和構(gòu)建自己的運(yùn)維能力方面有一定的優(yōu)勢(shì)。這些因素都是需要考慮的。
數(shù)據(jù)庫(kù)選項(xiàng)要考慮的因素很多,我今天也只能說(shuō)出其中很少的一部分,每個(gè)企業(yè)都有自己的特點(diǎn),因此也會(huì)有一些其他方面的考慮。我今天所說(shuō)也不見得正確,只是一種可借鑒的思路,如果你有些不同的見解,也不妨說(shuō)出來(lái),只有大家思考的多了,解決方案才會(huì)越來(lái)越清晰。不過(guò)我覺得,數(shù)據(jù)庫(kù)國(guó)產(chǎn)化替代,最重要的還不是選,而是選之后的做。?