最近,關于數據庫國產化替代的話題甚是熱門。OSCHINA開源中國特別邀請了歐冶云商股份有限公司數據庫首席薛曉剛就這一話題發表看法。
為什么要替代Oracle?
去IOE的背景,要從阿里巴巴去IOE談起,I是IBM小型機大型機,O是Oracle數據庫,E是EMC存儲。這幾個搭配起來使得阿里輕松走過了最初的技術發展階段。這個配置組合也是當年這條街最靚的仔。這個穿搭在大型銀行和運營商中也很常見。這種組合的好處是就穩定,而且非常穩定。缺點可能只有一個,就是貴。
隨著阿里業務的增加,阿里人考慮繼續這樣使用的成本很高。再加上阿里開始了云計算的規劃,所以提出了去IOE的口號。這個在其他互聯網公司是不可能有的。因為其他互聯網公司一開始就沒有IOE所以不需要去。只有阿里一開始的架構是這樣的。所以只有阿里提出了。
阿里做阿里云,希望用戶上云。上云的核心就是數據上云。數據上云后存在哪里?自然是數據庫中,如果用的數據庫是Oracle的,那么可能要分給Oracle利潤(要采購許可)。所以阿里打算用MySQL以及后來自研替代Oracle。
從最開始的去IOE,直到現在還經常看到各種大會上提到去O,這用了十幾年,去掉了I和E。有些企業完成了去O,而有些企業還在使用O。
那么為什么只提去O,那不用去DB2和SQLServer嗎?本質上也要去的。只是其他的數據庫不如Oracle的使用廣泛,例如現在使用和維護DB2的人是很少了。之所以沒人提去DB2,是因為從總體來說DB2,已經被去掉了。所以狹義去O是去掉Oracle數據庫,而廣義的去O其實可以擴大為去M(美國化)。
在今天不少人觀點認為用MySQL去替代Oracle是無意義的。因為MySQL和Oracle同屬于甲骨文公司。甚至在有的場合中還會提到要去掉MySQL。
當前數據庫國產化進程情況如何?
當前在信創和安可這些趨勢下,國產數據庫如雨后春筍般出現。在國內某權威數據庫排行榜上,已經有280多個數據庫了。實際上的數字可能比這個還要多一點。
在一些政府、金融、運營商行業都有一些國產化替換。這些替換其實不僅僅是數據庫了,還包括服務器、CPU、操作系統等等。從宣傳上看有些是全棧替換,有些是部分替換。也還有一些公司或者企業沒有替換。然而這些都是國產廠商的宣傳,至于實際的替換情況只有用戶自己知道。而即使替換的用戶也沒有進行相關的宣傳,這就使得整個情況非常的模糊。不過這個過程還在繼續,還是會有一些系統從Oracle、DB2、SQLServer等數據庫切換到國產化上來的。只是現在不確定因素太多了。
今年年初,TiDB、TDengine、TDSQL、OceanBase四位數據庫界掌門人在一場直播中大致達成一致,三年后在中國健康運營的數據庫不超過20家。所謂健康運營是,企業能有正常營收,員工發薪正常。目前國產數據庫有280多個產品,有的一個公司有幾個產品。即使這樣也是有絕大部分產品或者公司會因為無法盈利而退出舞臺。用戶現在也意識到了這一點,也在等情況明朗后再去選擇。沒有企業愿意看到花了很大代價切換的數據庫無人維護了,不得不繼續再次替換。
國產數據庫有完全自研的,例如達夢、OceanBase等,也有一些是基于MySQL做改造的,還有一些事基于PostgreSQL改造的,還有購買外國源碼然后進行修改的。
替代Oracle的難點在哪里?
技術上,Oracle確實領先,在數據庫領域是一個標桿一樣的存在。即使我們國產數據庫的頭部企業都認為自己和Oracle有較大的差距,作為學習者不斷地在向Oracle學習。
Oracle領先的其實不僅僅是技術,還有設計理念和前瞻性。2020年信通院發布的白皮書中寫了數據庫的未來幾大趨勢,而在那時候這幾個趨勢當時Oracle已經部分實現和深度實現了。其實Oracle產品線很多,不僅僅是數據庫。其中間件、硬件、操作系統等等是全方面的輸出。
具體到幾個方面:
兼容性。對于替換國產數據庫,兼容性是一件繞不開的話題,特別是對于存量系統來說,大多數重要系統是運行在Oracle數據庫上的,那么對于Oracle的基本SQL語法、PL/SQL、存儲過程、觸發器等的兼容性肯定是十分重要的,畢竟這涉及代碼變更的問題。如果在國產數據庫替換過程中出現業務適配新數據庫代碼變更量太大、數據庫功能缺失需要業務側代碼補充、適配分布式數據庫過程中對數據庫設計和業務邏輯變更等現象的話,開發層面對國產數據庫的抵觸會非常大。
性能。性能和硬件以及優化器都有很大的關系。優化器這方面目前沒有能超過Oracle優化器的。因為這些底層都是數學算法。2021年信通院發布的數據庫發展白皮書顯示,我國數據庫企業針對數據庫領域的平均專利數量(含國內外專利)為38個,最高為500個左右規模,數量為0的企業個數是19個,占比24%。擁有專利數0-4個的企業占比最高為51%,專利數5-10個的企業次之,占比14%,專利數21-50個的企業數量排名第三,占比12%。從企業專利數量上看,Oracle以1.4萬個全球領先,SAP居次席。
穩定性。Oracle的穩定性還是毋庸置疑的,這也就是為什么在過去那么多年中,其一直占據著領導地位,以及使用如此廣泛。企業負責人都不希望看到自己的數據庫經常出問題,每次數據庫的問題都可能導致故障,從而影響到在線業務。不僅僅要面對直接和間接的經濟損失,還有問責的壓力。
Oracle等國外數據庫有足夠的全球市場,專心在技術上投入做數據庫,而國產數據庫廠商只能在國內有限的數據庫市場內卷,需要投入大量的內卷、惡性競爭和關系處理上,無法專心把全部精力放在做數據庫上。甚至還是為了如何生存而謀劃。
國產數據庫的出現并不是技術問題,而是其他因素。
數據庫領域的人都知道,在信創活動結束之后就沒有替換動力了。而最終國內市場無法容得下幾百家供應商,所以大部分國產數據庫的消失也不是技術問題。
有哪些能夠替代Oracle的國產數據庫?
這個替代要講清楚是怎么替代?如果說就是把系統關停,然后把數據導過來,然后再修改數據庫的連接字符串就可以和之前一樣正常使用而且穩定的。目前沒見過也沒聽說過。
如果說換了一個國產數據庫,然后把鏈接這個數據庫的所有業務系統的軟件代碼進行修改(這個修改可能是30-100%),即軟件重寫適配數據庫或者部分需求和功能放棄,那么這樣的替換還是有一些的。OceanBase、TiDB、TDSQL等都有在不同程度上有,具體的都是應實際情況而定。
這些替換的優勢,可能在于滿足了政治要求。
這些替換的劣勢,有多方面:
由于同等硬件下不如Oracle的性能,所以增加硬件導致成本的上升。或者分布式數據庫的硬件就是比集中式硬件的多導致的硬件成本上升。
由于數據庫特性和功能的缺失,所以應用程序需要改造的成本上升。這部分可能占替換總成本的60%-80%。因為這是調動大量應用開發人員重寫適配的過程。
由于穩定性上不如Oracle,所以需要增加大量運維人員,導致運維的成本上升。
由于部分國產數據庫需要許可才可以運行,所以增加了大量的許可費用。相比較之前很少采購Oracle許可或者甚至不采購許可來說,這部分采購費用占比很大。
以上這些成本可能會是使用Oracle數據庫的數倍甚至幾十倍甚至上百倍。而很多計算中都忽略了第二和第三項的成本。
現有國產數據庫跟Oracle相比,有多大的差距?
從技術上來說,我們和Oracle相比有代差。
可能不同的人有不同的見解。我個人感覺有以下多方面的差距(但是不限于此):
數據庫的優化器上:有人說為什么Oracle快,你可能不知道多少滿頭白發的數學教授在那里研究著這些。有人說:你別逼我,逼急了我什么都做的出來。”“是嗎?,那你把這道數學題給做做?”人被逼急了還真不是什么都做的出來,起碼數學就不是。各種復雜查詢的核心是優化器和統計信息。而這全部都是數學問題。沒有在數學上的基礎投入是無法在這個領域攻堅克難的。
體系架構上:如今越來越多的國產數據庫考慮RAC架構。在經歷了互聯網的分布式數據庫的洗禮后,越來越多的用戶覺得集中式更加適合自己。所以才有了各種國產數據庫廠商開始實現RAC的計劃,達夢、優炫等。即使分布式數據庫廠商在研發過程中發現Oracle的各種體系設計,沒有一個是多余的,都是設計極其精妙的。而這些很多設計都是30年前甚至更早就已經設計到位的。
與操作系統的融合上:數據庫是運行在操作系統之上的,如何與CPU打交道?SQL調用指令集的多少都是有講究的。甚至有些操作是繞過操作系統直接操作的。這些都是需要深耕操作系統才能解決的。
與硬件的融合上:數據庫必然要和存儲設備打交道。數據庫的優化幾乎等同于IO優化。所以Oracle直接做出來自己的存儲。這些存儲上都是帶有CPU的,更好的存儲和讀取數據上發揮了很大的作用。做數據庫是從上至下的深入解決。
趨勢把握上:數據庫的多模和超融合這些都是Oracle在引領著數據庫技術的前進方向。我們定義為趨勢的,Oracle基本都是已經實現的。而很多理念從設計到實現需要8-10年的過程。
國產數據庫未來要怎么走?
我個人角度認為,應該靜下心來踏實的做技術。
最好是沒有政治因素的干擾去市場上競爭,避免大躍進式的百家齊放,而是規范市場,讓國內外數據庫廠商同臺競爭。用戶結合自己的預算進行抉擇,是選擇廉價的還是性價比高的,讓一切回歸到技術本身來。而不能用政策限制其他產品進入,只能強制使用國產。這樣會導致自我封閉和外部的排斥。既然我們用政策限制其他人,那么對等的就會出現別人限制我們。從而更加無法走出去。
如果真正能走出去,在國外用得起來,那么就是國產數據庫的成功。中國的高鐵就是因為走出去了才成為了中國的一張名片。
007bug
007bug
尚思卓越
一顆小胡椒
尚思卓越
尚思卓越
瀟湘信安
Coremail郵件安全
FreeBuf
X0_0X
Anna艷娜