最近,關(guān)于數(shù)據(jù)庫國產(chǎn)化替代的話題甚是熱門。OSCHINA 開源中國特別邀請(qǐng)了歐冶云商股份有限公司數(shù)據(jù)庫首席薛曉剛就這一話題發(fā)表看法。
去 IOE 的背景,要從阿里巴巴去 IOE 談起,I 是 IBM 小型機(jī)大型機(jī),O 是 Oracle 數(shù)據(jù)庫,E 是 EMC 存儲(chǔ)。這幾個(gè)搭配起來使得阿里輕松走過了最初的技術(shù)發(fā)展階段。這個(gè)配置組合也是當(dāng)年這條街最靚的仔。這個(gè)穿搭在大型銀行和運(yùn)營商中也很常見。這種組合的好處是就穩(wěn)定,而且非常穩(wěn)定。缺點(diǎn)可能只有一個(gè),就是貴。
隨著阿里業(yè)務(wù)的增加,阿里人考慮繼續(xù)這樣使用的成本很高。再加上阿里開始了云計(jì)算的規(guī)劃,所以提出了去 IOE 的口號(hào)。這個(gè)在其他互聯(lián)網(wǎng)公司是不可能有的。因?yàn)槠渌ヂ?lián)網(wǎng)公司一開始就沒有 IOE 所以不需要去。只有阿里一開始的架構(gòu)是這樣的。所以只有阿里提出了。
阿里做阿里云,希望用戶上云。上云的核心就是數(shù)據(jù)上云。數(shù)據(jù)上云后存在哪里?自然是數(shù)據(jù)庫中,如果用的數(shù)據(jù)庫是 Oracle 的,那么可能要分給 Oracle 利潤(要采購許可)。所以阿里打算用 MySQL 以及后來自研替代 Oracle。
從最開始的去 IOE,直到現(xiàn)在還經(jīng)??吹礁鞣N大會(huì)上提到去 O,這用了十幾年,去掉了 I 和 E。有些企業(yè)完成了去 O,而有些企業(yè)還在使用 O。
那么為什么只提去 O,那不用去 DB2 和 SQLServer 嗎?本質(zhì)上也要去的。只是其他的數(shù)據(jù)庫不如 Oracle 的使用廣泛,例如現(xiàn)在使用和維護(hù) DB2 的人是很少了。之所以沒人提去 DB2,是因?yàn)閺目傮w來說 DB2,已經(jīng)被去掉了。所以狹義去 O 是去掉 Oracle 數(shù)據(jù)庫,而廣義的去 O 其實(shí)可以擴(kuò)大為去 M(美國化)。
在今天不少人觀點(diǎn)認(rèn)為用 MySQL 去替代 Oracle 是無意義的。因?yàn)?MySQL 和 Oracle 同屬于甲骨文公司。甚至在有的場合中還會(huì)提到要去掉 MySQL。
當(dāng)前數(shù)據(jù)庫國產(chǎn)化進(jìn)程情況如何?
當(dāng)前在信創(chuàng)和安可這些趨勢下,國產(chǎn)數(shù)據(jù)庫如雨后春筍般出現(xiàn)。在國內(nèi)某權(quán)威數(shù)據(jù)庫排行榜上,已經(jīng)有 280 多個(gè)數(shù)據(jù)庫了。實(shí)際上的數(shù)字可能比這個(gè)還要多一點(diǎn)。
在一些政府、金融、運(yùn)營商行業(yè)都有一些國產(chǎn)化替換。這些替換其實(shí)不僅僅是數(shù)據(jù)庫了,還包括服務(wù)器、CPU、操作系統(tǒng)等等。從宣傳上看有些是全棧替換,有些是部分替換。也還有一些公司或者企業(yè)沒有替換。然而這些都是國產(chǎn)廠商的宣傳,至于實(shí)際的替換情況只有用戶自己知道。而即使替換的用戶也沒有進(jìn)行相關(guān)的宣傳,這就使得整個(gè)情況非常的模糊。不過這個(gè)過程還在繼續(xù),還是會(huì)有一些系統(tǒng)從 Oracle、DB2、SQLServer 等數(shù)據(jù)庫切換到國產(chǎn)化上來的。只是現(xiàn)在不確定因素太多了。
今年年初,TiDB、TDengine、TDSQL、OceanBase 四位數(shù)據(jù)庫界掌門人在一場直播中大致達(dá)成一致,三年后在中國健康運(yùn)營的數(shù)據(jù)庫不超過 20 家。所謂健康運(yùn)營是,企業(yè)能有正常營收,員工發(fā)薪正常。目前國產(chǎn)數(shù)據(jù)庫有 280 多個(gè)產(chǎn)品,有的一個(gè)公司有幾個(gè)產(chǎn)品。即使這樣也是有絕大部分產(chǎn)品或者公司會(huì)因?yàn)闊o法盈利而退出舞臺(tái)。用戶現(xiàn)在也意識(shí)到了這一點(diǎn),也在等情況明朗后再去選擇。沒有企業(yè)愿意看到花了很大代價(jià)切換的數(shù)據(jù)庫無人維護(hù)了,不得不繼續(xù)再次替換。
國產(chǎn)數(shù)據(jù)庫有完全自研的,例如達(dá)夢(mèng)、OceanBase 等,也有一些是基于 MySQL 做改造的,還有一些事基于 PostgreSQL 改造的,還有購買外國源碼然后進(jìn)行修改的。
替代 Oracle 的難點(diǎn)在哪里?
技術(shù)上,Oracle 確實(shí)領(lǐng)先,在數(shù)據(jù)庫領(lǐng)域是一個(gè)標(biāo)桿一樣的存在。即使我們國產(chǎn)數(shù)據(jù)庫的頭部企業(yè)都認(rèn)為自己和 Oracle 有較大的差距,作為學(xué)習(xí)者不斷地在向 Oracle 學(xué)習(xí)。
Oracle 領(lǐng)先的其實(shí)不僅僅是技術(shù),還有設(shè)計(jì)理念和前瞻性。2020 年信通院發(fā)布的白皮書中寫了數(shù)據(jù)庫的未來幾大趨勢,而在那時(shí)候這幾個(gè)趨勢當(dāng)時(shí) Oracle 已經(jīng)部分實(shí)現(xiàn)和深度實(shí)現(xiàn)了。其實(shí) Oracle 產(chǎn)品線很多,不僅僅是數(shù)據(jù)庫。其中間件、硬件、操作系統(tǒng)等等是全方面的輸出。
具體到幾個(gè)方面:
兼容性。對(duì)于替換國產(chǎn)數(shù)據(jù)庫,兼容性是一件繞不開的話題,特別是對(duì)于存量系統(tǒng)來說,大多數(shù)重要系統(tǒng)是運(yùn)行在 Oracle 數(shù)據(jù)庫上的,那么對(duì)于 Oracle 的基本 SQL 語法、PL/SQL、存儲(chǔ)過程、觸發(fā)器等的兼容性肯定是十分重要的,畢竟這涉及代碼變更的問題。如果在國產(chǎn)數(shù)據(jù)庫替換過程中出現(xiàn)業(yè)務(wù)適配新數(shù)據(jù)庫代碼變更量太大、數(shù)據(jù)庫功能缺失需要業(yè)務(wù)側(cè)代碼補(bǔ)充、適配分布式數(shù)據(jù)庫過程中對(duì)數(shù)據(jù)庫設(shè)計(jì)和業(yè)務(wù)邏輯變更等現(xiàn)象的話,開發(fā)層面對(duì)國產(chǎn)數(shù)據(jù)庫的抵觸會(huì)非常大。
性能。性能和硬件以及優(yōu)化器都有很大的關(guān)系。優(yōu)化器這方面目前沒有能超過 Oracle 優(yōu)化器的。因?yàn)檫@些底層都是數(shù)學(xué)算法。2021 年信通院發(fā)布的數(shù)據(jù)庫發(fā)展白皮書顯示,我國數(shù)據(jù)庫企業(yè)針對(duì)數(shù)據(jù)庫領(lǐng)域的平均專利數(shù)量(含國內(nèi)外專利)為 38 個(gè),最高為 500 個(gè)左右規(guī)模,數(shù)量為 0 的企業(yè)個(gè)數(shù)是 19 個(gè),占比 24%。擁有專利數(shù) 0-4 個(gè)的企業(yè)占比最高為 51%,專利數(shù) 5-10 個(gè)的企業(yè)次之,占比 14%,專利數(shù) 21-50 個(gè)的企業(yè)數(shù)量排名第三,占比 12%。從企業(yè)專利數(shù)量上看,Oracle 以 1.4 萬個(gè)全球領(lǐng)先,SAP 居次席。
穩(wěn)定性。Oracle 的穩(wěn)定性還是毋庸置疑的,這也就是為什么在過去那么多年中,其一直占據(jù)著領(lǐng)導(dǎo)地位,以及使用如此廣泛。企業(yè)負(fù)責(zé)人都不希望看到自己的數(shù)據(jù)庫經(jīng)常出問題,每次數(shù)據(jù)庫的問題都可能導(dǎo)致故障,從而影響到在線業(yè)務(wù)。不僅僅要面對(duì)直接和間接的經(jīng)濟(jì)損失,還有問責(zé)的壓力。
Oracle 等國外數(shù)據(jù)庫有足夠的全球市場,專心在技術(shù)上投入做數(shù)據(jù)庫,而國產(chǎn)數(shù)據(jù)庫廠商只能在國內(nèi)有限的數(shù)據(jù)庫市場內(nèi)卷,需要投入大量的內(nèi)卷、惡性競爭和關(guān)系處理上,無法專心把全部精力放在做數(shù)據(jù)庫上。甚至還是為了如何生存而謀劃。
國產(chǎn)數(shù)據(jù)庫的出現(xiàn)并不是技術(shù)問題,而是其他因素。
數(shù)據(jù)庫領(lǐng)域的人都知道,在信創(chuàng)活動(dòng)結(jié)束之后就沒有替換動(dòng)力了。而最終國內(nèi)市場無法容得下幾百家供應(yīng)商,所以大部分國產(chǎn)數(shù)據(jù)庫的消失也不是技術(shù)問題。
有哪些能夠替代 Oracle 的國產(chǎn)數(shù)據(jù)庫?
這個(gè)替代要講清楚是怎么替代?如果說就是把系統(tǒng)關(guān)停,然后把數(shù)據(jù)導(dǎo)過來,然后再修改數(shù)據(jù)庫的連接字符串就可以和之前一樣正常使用而且穩(wěn)定的。目前沒見過也沒聽說過。
如果說換了一個(gè)國產(chǎn)數(shù)據(jù)庫,然后把鏈接這個(gè)數(shù)據(jù)庫的所有業(yè)務(wù)系統(tǒng)的軟件代碼進(jìn)行修改(這個(gè)修改可能是 30-100%),即軟件重寫適配數(shù)據(jù)庫或者部分需求和功能放棄,那么這樣的替換還是有一些的。OceanBase、TiDB、TDSQL 等都有在不同程度上有,具體的都是應(yīng)實(shí)際情況而定。
這些替換的優(yōu)勢,可能在于滿足了政治要求。
這些替換的劣勢,有多方面:
由于同等硬件下不如 Oracle 的性能,所以增加硬件導(dǎo)致成本的上升?;蛘叻植际綌?shù)據(jù)庫的硬件就是比集中式硬件的多導(dǎo)致的硬件成本上升。
由于數(shù)據(jù)庫特性和功能的缺失,所以應(yīng)用程序需要改造的成本上升。這部分可能占替換總成本的 60%-80%。因?yàn)檫@是調(diào)動(dòng)大量應(yīng)用開發(fā)人員重寫適配的過程。
由于穩(wěn)定性上不如 Oracle,所以需要增加大量運(yùn)維人員,導(dǎo)致運(yùn)維的成本上升。
由于部分國產(chǎn)數(shù)據(jù)庫需要許可才可以運(yùn)行,所以增加了大量的許可費(fèi)用。相比較之前很少采購 Oracle 許可或者甚至不采購許可來說,這部分采購費(fèi)用占比很大。
以上這些成本可能會(huì)是使用 Oracle 數(shù)據(jù)庫的數(shù)倍甚至幾十倍甚至上百倍。而很多計(jì)算中都忽略了第二和第三項(xiàng)的成本。
現(xiàn)有國產(chǎn)數(shù)據(jù)庫跟 Oracle 相比,有多大的差距?
從技術(shù)上來說,我們和 Oracle 相比有代差。
可能不同的人有不同的見解。我個(gè)人感覺有以下多方面的差距(但是不限于此):
數(shù)據(jù)庫的優(yōu)化器上:有人說為什么 Oracle 快,你可能不知道多少滿頭白發(fā)的數(shù)學(xué)教授在那里研究著這些。有人說:你別逼我,逼急了我什么都做的出來。” “是嗎?,那你把這道數(shù)學(xué)題給做做?” 人被逼急了還真不是什么都做的出來,起碼數(shù)學(xué)就不是。各種復(fù)雜查詢的核心是優(yōu)化器和統(tǒng)計(jì)信息。而這全部都是數(shù)學(xué)問題。沒有在數(shù)學(xué)上的基礎(chǔ)投入是無法在這個(gè)領(lǐng)域攻堅(jiān)克難的。
體系架構(gòu)上:如今越來越多的國產(chǎn)數(shù)據(jù)庫考慮 RAC 架構(gòu)。在經(jīng)歷了互聯(lián)網(wǎng)的分布式數(shù)據(jù)庫的洗禮后,越來越多的用戶覺得集中式更加適合自己。所以才有了各種國產(chǎn)數(shù)據(jù)庫廠商開始實(shí)現(xiàn) RAC 的計(jì)劃,達(dá)夢(mèng)、優(yōu)炫等。即使分布式數(shù)據(jù)庫廠商在研發(fā)過程中發(fā)現(xiàn) Oracle 的各種體系設(shè)計(jì),沒有一個(gè)是多余的,都是設(shè)計(jì)極其精妙的。而這些很多設(shè)計(jì)都是 30 年前甚至更早就已經(jīng)設(shè)計(jì)到位的。
與操作系統(tǒng)的融合上:數(shù)據(jù)庫是運(yùn)行在操作系統(tǒng)之上的,如何與 CPU 打交道?SQL 調(diào)用指令集的多少都是有講究的。甚至有些操作是繞過操作系統(tǒng)直接操作的。這些都是需要深耕操作系統(tǒng)才能解決的。
與硬件的融合上:數(shù)據(jù)庫必然要和存儲(chǔ)設(shè)備打交道。數(shù)據(jù)庫的優(yōu)化幾乎等同于 IO 優(yōu)化。所以 Oracle 直接做出來自己的存儲(chǔ)。這些存儲(chǔ)上都是帶有 CPU 的,更好的存儲(chǔ)和讀取數(shù)據(jù)上發(fā)揮了很大的作用。做數(shù)據(jù)庫是從上至下的深入解決。
趨勢把握上:數(shù)據(jù)庫的多模和超融合這些都是 Oracle 在引領(lǐng)著數(shù)據(jù)庫技術(shù)的前進(jìn)方向。我們定義為趨勢的,Oracle 基本都是已經(jīng)實(shí)現(xiàn)的。而很多理念從設(shè)計(jì)到實(shí)現(xiàn)需要 8-10 年的過程。
國產(chǎn)數(shù)據(jù)庫未來要怎么走?
我個(gè)人角度認(rèn)為,應(yīng)該靜下心來踏實(shí)的做技術(shù)。
最好是沒有政治因素的干擾去市場上競爭,避免大躍進(jìn)式的百家齊放,而是規(guī)范市場,讓國內(nèi)外數(shù)據(jù)庫廠商同臺(tái)競爭。用戶結(jié)合自己的預(yù)算進(jìn)行抉擇,是選擇廉價(jià)的還是性價(jià)比高的,讓一切回歸到技術(shù)本身來。而不能用政策限制其他產(chǎn)品進(jìn)入,只能強(qiáng)制使用國產(chǎn)。這樣會(huì)導(dǎo)致自我封閉和外部的排斥。既然我們用政策限制其他人,那么對(duì)等的就會(huì)出現(xiàn)別人限制我們。從而更加無法走出去。
如果真正能走出去,在國外用得起來,那么就是國產(chǎn)數(shù)據(jù)庫的成功。中國的高鐵就是因?yàn)樽叱鋈チ瞬懦蔀榱酥袊囊粡埫?/p>
作者簡介:
薛曉剛,現(xiàn)任歐冶云商股份有限公司數(shù)據(jù)庫首席。曾服務(wù)于政府、公安、交通、安防行業(yè),從事過大型項(xiàng)目管理,設(shè)計(jì)和運(yùn)維多個(gè)單表 100 億,單機(jī) 100TB 的數(shù)據(jù)庫。目前負(fù)責(zé)高可用、業(yè)務(wù)連續(xù)性和高并發(fā)數(shù)據(jù)架構(gòu)設(shè)計(jì)和運(yùn)維管理。
Oracle ACE-Pro(Oracle 和 MySQL 方向),Oracle OCP/MySQL OCP 及 OCP 講師。PostgreSQL 的 PGCE 和 PCP 認(rèn)證,PostgreSQL ACE Partner。墨天輪 MVP,TiDB MVA,ITPUB 論壇內(nèi)存數(shù)據(jù)庫版主、核心專家、金牌顧問,墨天輪社區(qū)特聘金牌講師,機(jī)械工業(yè)出版社專家委員會(huì)委員。
審核編輯:湯梓紅
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3800瀏覽量
64402 -
開源
+關(guān)注
關(guān)注
3文章
3349瀏覽量
42505 -
Oracle
+關(guān)注
關(guān)注
2文章
289瀏覽量
35136
原文標(biāo)題:國產(chǎn)數(shù)據(jù)庫的出現(xiàn)和消失,都不是技術(shù)問題
文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論