國產資料庫發展現狀分析
來自專欄摩柏數據吧4 人贊了文章
原作者 曉軍
1992年加入Sybase中國,之後曾在Informix、 IBM任職, 現在就職於Oracle。專註於資料庫和數據倉庫十餘年。
導語
從上世紀90年代開始,國產資料庫的開發就不斷被人提起,國內已有不少企業、團體在這個方面做了不少的投入。在此,我們與大家分享一下對幾個資料庫國產化途徑的看法。我們主要討論自主研發、引進代碼和互聯網廠商提供的雲上資料庫。
自主研發
國內自主研發關係型資料庫的企業、單位基本上都是發源於上世紀90年代的,而且都是以大學、科研機構為主。到今天,有代表性的廠商有:
- 達夢 – 由華中理工馮玉才教授創辦,完全自主研發。以Oracle為參照、追趕對象。
- 人大金倉 – 由人民大學王珊教授創辦,自主研發。普通的關係型資料庫。
- 神舟通用 – 神舟集團與南大通用合作開發的關係型資料庫。更多地用於數據分析領域。
- 南大通用(Gbase 8a)- 南開大學的背景,2010年左右自主研發的,基於列式存儲的,面向數據分析、數據倉庫的資料庫系統。
其他沒有列出的,屬於在下孤陋寡聞,絕無貶低的意思。
這些公司的發展分為兩個階段,以2007年作為分界線。前一個階段集中在20世紀90年代,公司的出發點就是開發一款通用的,主要面向OLTP的關係型資料庫。在那個年代,中國的人工成本還是比較低的,國外廠商的資料庫,如:Oracle,Sybase,Informix,DB2都算是成本較高的產品。很多人認為,只要做出功能、性能、穩定性合適的國產資料庫,就能有一定的市場,至少價格能夠有優勢;即便市場不成功,作為科研教學也有一定價值,至少申請科研經費和政府補貼是個好題材。
但是,這麼些年下來,這些產品在市場上並沒有產生大影響力。他們發展的這些年,也正好是本人在相應的國外知名廠商從業的這些年。從微觀的角度看,國產自主研發的資料庫敗在僅僅追求大而全,而技術創新不足、沒有特點,產品的穩定性一直上不去,也不敢做有挑戰性的性能測試。所以,穩定性、性能都無法讓市場信服。結果就是:稍微重要一點的系統根本沒人敢用。
中國資料庫軟體這個市場,從80年代末一開始,就是伴隨改革開放的自由競爭市場,政府基本沒有對國產品牌的扶植和保護。因此,在國產產品的研發思路上,就不能夠簡單地模仿Oracle。Oracle的資料庫軟體,功能極為豐富,支持的語句非常全面,超過ANSI
SQL的標準,代碼量堪稱浩瀚。而一個國產的小廠商,要模仿Oracle開發一個資料庫系統,開發一個與Oracle全兼容的資料庫(而我們很多政府客戶恰恰就在標書上要求這個,也不知道他們是支持國產資料庫還是打壓國產資料庫),就好比乞丐與龍王比闊:這註定是一條艱辛且難以成功的道路。那麼,看看同期國外的小廠商又是怎麼做的?
Sybase採用多線程代替多進程開發了伺服器,一切圍繞client/server架構,成為當年的新銳;一家叫做Express
Way的小公司開發了點陣圖索引,被Syabse收購,發展出Sybase IQ和列式存儲,直到今天依然是Sybase的重要產品;90年代初,加州大學伯克利的MichaelStonebraker教授提出了對象關係資料庫理論,並以此成立了Illustra公司,然後被Informix收購,推出Informix
Universal Server;數據倉庫大師Ralph Kimball以多維關係模型理論,構建了RedBrick資料庫公司,在星型連接環節提供特別的索引技術,後來被Informix收購,成為單節點數據倉庫產品的主力;Netezza則是採用了可編程門陣列FPGA參與磁碟數據的掃描,最後被IBM收購,成為IBM數據倉庫的主力產品……因此,那些年間,我有一個感慨:每當我們認為關係資料庫的技術已經到頭了,已經是一個夕陽產業的時候,總會有一家極富創新的小公司跳出來,他們帶著令人耳目一新的想法贏得市場的尊敬與成功。而可惜的是,這一切都沒有出現在我們這幾個自主研發的國產資料庫「龍頭企業」身上。
這樣的話,這些國產自主研發的資料庫產品就會典型地遭遇到:
- 沒有特別的技術亮點和優勢;
- 產品的穩定性差:客戶不敢用它承擔關鍵業務(甚至是普通業務);
- 生態環境差:成型應用少,合作開發商少;
- 產品技術發展滯後,與國外同類產品差距巨大;
這實際上是一個惡性循環,跳不出這個圈子,產品和公司是沒辦法發展的。不過,這些公司有能力生存至今,除了人工便宜,還因為每年能得到政府一定程度上的補貼;儘管從政府的角度看,這些補貼是打水漂的。
今天,我們對於這一類的產品的未來總體是不看好的,這是因為:20年對於一個高科技企業來說不是一個短暫的時間段。在90年代,即便是Oracle在整個市場普及的情況下,Sybase、Informix也還是在短短的幾年間發展起來,並佔據了一部分市場。如果一個高科技企業20年都沒能發展起來,一定有一些關鍵的內在因素制約,其實已經說明他們不可能發展起來了。這些因素改變了嗎?我們認為近兩年來,僅僅是外部輿論的環境,似乎更加註重了國產化,但其它內在的因素都沒有任何改變。與此同時,負面的因素也不少:其中最重要的是關係資料庫軟體大發展的年代已經過去了,今天我們面臨的是經濟發展減速、開源軟體普及和雲計算的轉型。
依靠這一類「自主研發」的資料庫產品去支撐中國資料庫國產化基本是不可能的。世界的頂尖產品依然高速發展。今年2月,Oracle已經正式發布18c這個版本了。我們的自主研發,也許還在以Oracle 9i為目標,而且還沒有令人信服的穩定性。
在2007年以後,一些國內的資料庫公司意識到資料庫軟體應該跟隨數據管理市場的發展。而數據分析(OLAP)被認為是未來具有發展潛力的一塊(相對於傳統OLTP資料庫應用)。而且,數據倉庫類的平台,對可靠性、時效性要求比較低。直覺是更適合於國產軟體進行率先突破。這樣,以神州通用、南大通用為代表的公司在分散式並行處理和列式存儲資料庫方面做了新的投入。
然而,這一塊是一個發展迅速且技術路線存在爭議的領域。從歷史上看,大型的數據倉庫,採用Teradata的客戶佔據一大部分,Oracle在那個領域的投入並不大。因此,在數據倉庫上的國產化發展,並不能解政府的「自主可控」、替代、擺脫Oracle的燃眉之急。數據倉庫領域在大數據概念被炒作之前一直不怎麼受待見。另一方面,這個領域遇到的市場競爭也不小:數據倉庫規模大了,有Teradata和DB2的壓制;規模小了,有Greenplum的競爭;如果遇到界限模糊的,客戶就直接延用Oracle了。
而今天,這個領域最大的競爭則是來自大數據的解決方案。本來,國產的數據倉庫平台開始就是主攻中低端的(高端有Teradata的各種壓制)。但是,之前主要的對手Greenplum竟然宣布開源了,背景是其東家Pivotal公司將重點轉向虛擬化和大數據了。這樣的話,專註於數據倉庫的國產資料庫有多了一個競爭對手,市場被進一步瓜分。要想進入良性循環就更加困難。
引進源代碼
引進資料庫源代碼發展國產資料庫,這在上個世紀對於國人來講還是不敢想的。如今,經濟發展了,有錢了;而且IBM也願意迎合國人對於國產化的訴求,將擱置多年的Informix源代碼拿出來「一馬(碼)多吃」,發揮餘熱。2015年以來,與IBM簽訂源代碼授權的公司有華勝天成、南大通用(Gbase
8t)和星瑞格。這三個公司成為以引進Informix源代碼發展國產資料庫的代表。在此,我們分析一下引進Informix源代碼到底解決了什麼問題?其實,資料庫技術發展到今天,國人並非不知道資料庫底層該怎麼開發,而是自己寫的代碼在市場上磨練比較少,對穩定性信心不足,而這種信心的不足同樣來自客戶方面。所以,引進Informix的源代碼,一個核心的作用就是利用Informix以往在中國市場上的聲譽使客戶獲得信心。所以,這些拿著Informix源代碼的國產資料庫公司在做銷售工作的時候往往需要反覆向客戶說明:「這就是Informix,這就是世界級的資料庫產品!」,否則就體現不出與自主研發或抄襲開源的區別了。
對於Informix而言,國內的客戶大致可以分為三類:
第一類是Informix的老客戶,今天還在使用的。這些客戶之前是認可Informix,而且堅持到了今天。這些客戶中有一部分其實已經不願意繼續使用Informix(企業中的其它系統早已採用Oracle),僅僅是因為有老的應用跑在這個資料庫上;一旦應用升級換代,Informix資料庫也自然淘汰。還有一些客戶雖然可以使用Informix,但是否換成國產的版本還不確定,他們還可能等待IBM對於Informix的繼續支持、乃至升級。這部分客戶其實是國產Informix廠商最適合作為起步的客戶,但所剩的數量實在太少了。更嚴峻的是,IBM其實並沒有徹底出售Informix,IBM還在繼續發布Informix的後續版本。雖然非常緩慢,但還是有可能比這幾個國產的廠商快一些,因為國產的廠商可是要從頭讀源代碼的,要等到他們也能出新版本,時間不會短。但是,國內的這部分客戶,一旦升級到IBM提供的Informix新版本,他們就絕難回到國產的Informix版本了,因為那就相當於降級了。這部分客戶留給國產Informix的時間已經不多。
第二類是曾經採用過Informix的客戶,如今已經轉到Oracle上。這一類用戶或許還是認可Informix技術的,但要讓他們再回到國產的Informix上則非常難。對於這些客戶而言,回到Informix,不管是IBM的還是國產的,都如同走回頭路
- 很少有人願意走回頭路的。第三類則從來就不是Informix的客戶,對於這些人來講,當年就沒有認可Informix。今天,即便你說Informix是世界級的,你是中國的Informix,對於這類客戶的感受依然是遙遠和陌生的。
因此,我們並不認為花錢引進Informix源代碼是國產資料庫發展的最佳途徑。這套源代碼的市場效應其實是有限的,在技術上的幫助也是有限的。在技術發展日新月異的年代,經過10多年的擱置,Informix的代碼、產品和創新已經算不得先進,技術的細節暫不在此贅述了。
需要指出的是:依靠代碼的引進的另一個風險就是二次落後,這一點很多人可能還沒有意識到。從目前的情況看,國產Informix資料庫的代碼在不遠未來就會與IBM自己的Informix分叉。即便基於Informix的源代碼,國產資料庫到底能走多遠,與世界先進水平之間的差距是擴大還是縮小,最終還是要靠自己。
類似的案例就是國產戰鬥機的發展:在抗美援朝年代,我們得到了蘇聯的米格15以及後來的米格17。那時候是中國空軍與美國空軍在飛機裝備上差距最小的時期。我們在此基礎上發展出自己的殲5、殲6。但是,幾十年以後的科索沃戰爭、伊拉克戰爭的時候,我們的差距卻又變得那麼懸殊。因此,即便是今天的「世界級」,如果離開了強大的研發和創新實力,也會失去未來。
今天,擁有Informix源代碼的國產資料庫廠商,如果真的想全面掌控Informix技術,研發的投入絕對是不小的。Informix的主要模塊的源代碼就有2000多萬行,Informix當年在美國的核心研發隊伍就有超過200人,加上測試和周邊團隊,不下500人。要快速追趕世界先進水平,研發的規模不能小於這個(讀別人的代碼其實比自己寫代碼還要累!)。但目前的市場容量又不支持這樣的投入。這是一個現實的困境,是不容易突破的。無論是華勝天成、南大通用,還是星瑞格,都沒有像樣的、有規模的研發隊伍投入到Informix的源代碼掌握中。他們對Informix的研發投入,都不超過40人。
2017年5月發生的事情徹底斷絕了Informix成為中國國產資料庫的希望:2017年5月,IBM把整個Informix業務賣給了印度公司HCL。印度的HCL是全面接管IBM
Informix,不僅僅是代碼,而是全部的團隊、公司、辦公場所。IBM Informix在美國的辦公樓直接換了Logo,員工全部簽了IBM的離職協議,同時簽印度HCL的入職。印度的「資料庫國產化力度」似乎更「大手筆」一些。這樣,國內的幾個半吊子Informix代碼的廠商 - 華勝天成、南大通用、星瑞格,從此基本都斷了根!這幾年來,南大通用到處給國人宣傳的口號「讓中國人用上世界領先的資料庫」,恐怕要改成「讓中國人用上三哥的資料庫」。這已經表明,在Informix代碼上發展國產資料庫這條路,基本已經走不通:國內的這幾個廠商面對十年前的巨量代碼一籌莫展,要弄通又得花很多年,而且還是在資金、人員充足的情況下。即便到了那個時候(公司還存在),且不說他們與世界先進水平差多遠,就是比鄰國印度,都難以望其項背!
在引進源代碼這類公司中,還需要一提的是浪潮。浪潮的K-DB資料庫實際上是從韓國引進的。但浪潮並沒有說明是否引進了源代碼。所以,我們把它歸為引進產品而非引進代碼。從某種程度上講,還不能算是「自主可控」,或者「國產資料庫」,因為我們不能確信浪潮掌握的相關技術。我們知道,浪潮前些年採用了HP的安騰晶元推出自己的伺服器。但不幸的是,除了HP自身走下坡路,Oracle更是在後來宣布Oracle資料庫不再支持安騰。因此,浪潮的安騰伺服器便陷入了無法提供Oracle資料庫軟體的窘境。一個不能運行Oracle資料庫的伺服器,市場份額的損失得有多大?為此,浪潮必須尋找一個Oracle的替代品,而且與Oracle越像越好,最好全兼容。這樣,浪潮從韓國找到了K-DB。K-DB號稱是與Oracle全兼容的資料庫。但是業界有傳聞說是K-DB是來源於早年Oracle源代碼的泄漏。這個雖然很難核實。但我們可以考察一下韓國市場的情況:如果K-DB真有浪潮說的那麼強,那它應該在韓國紅遍天才對,因為韓國每年在Oracle上的支出是非常大的(Oracle在韓國的銷售額近年來出現過好幾個季度是超過中國的!)。可是,我們並沒有發現K-DB在韓國很火。那麼原因很可能是K-DB真的有不方便的地方:韓國是需要美國來保護的,韓國對於美國軟體的知識產權上是不敢造次的。
同樣,未來遇到某個國產資料庫號稱全部兼容Oracle的時候一定要注意。因為Oracle最有特色的地方就是功能非常繁多,語句極端豐富,即便大部分都不常用。其它公司要是追求這個,在研發上就是乞丐與龍王爺比富!在2010年前後,IBM啟動了一個「破甲計劃」,就是在DB2資料庫中增加一個選項,使得DB2可以支持Oracle的各種語法。這個計劃花費了大量的投資,結果依然有很多Oracle的語句與用法不能夠支持。
互聯網企業的雲資料庫
除了上述的傳統國產資料庫之外,近年來,互聯網公司的雲計算在市場上非常紅火。尤其是阿里雲,在中國的雲計算市場上佔據了主導地位。互聯網公司擁有雄厚的資金實力,阿里巴巴在資料庫研發上有大量的投入,並在阿里雲上提供了自己的資料庫。那麼,雲計算廠商在其雲計算平台上提供的資料庫能否承擔起資料庫國產化的重任?
在此,我們認為這是存在局限的:
1、雲計算廠商主要的業務是提供雲服務。因此,雲計算供應商在雲上一般會提供多種資料庫平台,如:MySQL,PostgreSQL,自研的資料庫。雲廠商自研的資料庫只是其中一種,並不見得有絕對的優勢。只是提供給客戶更多的選擇。
2、雲計算廠商開發的資料庫系統,市場目標是在自家的雲上提供服務,而不是作為傳統軟體賣許可證。因此,很多打算擺脫Oracle,採用國產資料庫,但又還沒打算上雲的用戶,就很難享受到這類產品。
3、每個雲計算供應商開發的資料庫只在自家的雲上提供服務,其它雲平台當然無法運行。這樣,對於獨立軟體商來說,他們當然希望自己的軟體能夠運行在多個雲平台上。在這個時候,他們的應用軟體如果採用某個雲計算公司提供的資料庫,這就有些不方便了。所以,這些獨立軟體商需要一個類似傳統的、獨立的關係資料庫,這個資料庫可以在各個雲計算平台上運行。同樣的情況也發生在資料庫的用戶身上。
4、目前的雲計算公司提供的資料庫,其實也處於起步階段。只是在資金、支持服務上因為雲的關係,存在一定的優勢。未來的發展還要看市場。
因此,雲計算雖然在近年來發展迅速,而且也是未來的趨勢。但云計算平台上的資料庫系統還不能取代市場上對傳統國產資料庫的需求。
今天,國產資料庫確實處於一個非常尷尬的局面。很多政府相關的資料庫軟體招標都指明了要求國產資料庫。在這個過程中,政府實際上承受著不小的壓力:美國就此指責我們違反商業公平原則,從而在美國本土對於中國企業,如:華為、阿里,等等,進行限制與施壓。造成中國企業的損失。而在國內,真正做基層工作的人員,無論是出於對國產軟體的信心缺失,還是由於自身的保守,抑或是收取了Oracle的好處,又紛紛訴苦,聲稱他們的系統離不開Oracle。從而造成的一種局面,就是管理層似乎不懂技術,只講政治;而基層人員要為業務負責,又必須採購國外產品。同時,還有一幫同為政府部門的豬隊友,給Oracle出具證書,證明他們在中國有實驗室,Oracle產品可以算作是在中國生產的……
從另一個角度看,但凡有國產資料庫參與的投標,只要是傳統的關係資料庫,無非就是人大金倉、達夢以及南大通用(Gbase 8t)。但這幾款產品,各自確存在這樣或那樣的硬傷,對於承載中國資料庫軟體國產化的重任力不從心。因此,我們必須尋求新的出路。
你怎麼看?歡迎留言討論。文章為作者獨立觀點,不代表德昂信息立場。
想了解更多資料庫有關知識嗎?掃描下方二維碼關注公眾號吧↓↓↓
http://weixin.qq.com/r/hzoIEBLEBE97rVZz92_V (二維碼自動識別)
推薦閱讀:
※InnoDB事務及索引原理
※mysql死鎖的問題?
※MySQL的Hash索引
※來不及解釋了!看OceanBase SQL團隊如何優雅處理4200萬條/秒SQL峰值
※如何理解Innodb 的文件物理結構?