數(shù)據(jù)庫管理系統(tǒng):中國還在尋找“正確打開方式”
有一天你去銀行取錢,驚喜地發(fā)現(xiàn):由于系統(tǒng)故障,你的賬戶顯示著馬云的數(shù)據(jù)……
這種事不可能發(fā)生,因為數(shù)據(jù)庫管理系統(tǒng)非??煽?。網(wǎng)上買火車票,或者將照片上傳云端,你都離不開它。
而商用數(shù)據(jù)庫管理系統(tǒng)的豐厚利潤,一直被甲骨文為首的幾家美國公司瓜分,中國產(chǎn)品望洋興嘆。
速度和可靠,兼顧是難題
查詢銀行賬戶時,我們不知道數(shù)字來自哪臺計算機,哪塊硬盤。有數(shù)據(jù)庫管理系統(tǒng)(DBMS)替我們干活。
DBMS 就像圖書管理員:找到書架,存書,取書……說起來容易,但當圖書館特別大,而且書會拆開來放入相隔遙遠的架子時,管理起來就很麻煩了。
在數(shù)據(jù)庫開發(fā)與實施方面有豐富經(jīng)驗的 IBM 分析領(lǐng)域架構(gòu)師羅曦光舉了一個例子——用戶修改數(shù)據(jù)時,相關(guān)存儲區(qū)域會被鎖住,其他用戶只能排隊等,如果 DBMS 存儲位置不合理,就會耽誤許多時間。數(shù)據(jù)操作的理想狀況,如同幾十只手彈奏一架鋼琴,各彈各的,互不影響。
“數(shù)據(jù)庫管理系統(tǒng),尤其是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的方法論,教科書上寫得很明白;其功能和常見的圖書管理系統(tǒng)沒什么差別。但當數(shù)據(jù)量非常大,到了 TB 和 PB 級別,DBMS 性能不下降就是一大挑戰(zhàn)。”羅曦光說。
比如一個普通的大型網(wǎng)站,每秒鐘要處理十萬個查詢請求,數(shù)據(jù)庫得同時執(zhí)行幾十個查詢?nèi)蝿?wù),而且響應(yīng)時間極短。
“網(wǎng)絡(luò)用戶發(fā)送請求,期望一眨眼就得到結(jié)果。如果 DBMS 做得不好,響應(yīng)時間長到 10 秒或 20 秒,用戶會喪失耐心,數(shù)據(jù)庫還可能經(jīng)常掛掉。”羅曦光說,要永遠不出故障,達到高可用性,需要很多專門技術(shù)。
目前全世界最流行的兩種 DBMS 是 Oracle 和 MySQL,都是甲骨文公司旗下的產(chǎn)品。競爭者還有 IBM 公司的 DB2、Informix,微軟公司的 SQLserver 以及開源的 MariaDB 等等。甲骨文、IBM、微軟和 Teradata 幾家美國公司,占了大部分市場份額。
國產(chǎn)替代難,輸在穩(wěn)定性
DBMS 國貨也有市場份額,但只是個零頭。銀行、電信、電力等要求極端穩(wěn)妥的企業(yè),不會考慮國貨。20 年前就有人呼吁國貨替代,但一線技術(shù)人員并不情愿。
“先發(fā)優(yōu)勢、完善的售后技術(shù)支持和高額的遷移成本,是企業(yè)難以遷移到新系統(tǒng)的原因。”羅曦光說,國內(nèi)一家電商平臺為了從 Oracle 遷徙到別的系統(tǒng),最多曾用上百人的團隊花了十幾個月,成本不菲。
羅曦光認為,如今的開源 DBMS 做得很好而且免費,但銀行和傳統(tǒng)龍頭企業(yè)出于謹慎,對于將核心系統(tǒng)遷移到開源系統(tǒng)仍會持謹慎態(tài)度。
穩(wěn)定壓倒一切。DBMS 行業(yè)觀察家曉軍在《國產(chǎn)數(shù)據(jù)庫發(fā)展現(xiàn)狀分析》一文中指出,國內(nèi) DBMS 企業(yè)大多源自 1990 年代的高校,期望實現(xiàn)國產(chǎn)替代。但多年來,“產(chǎn)品的穩(wěn)定性一直上不去,也不敢做有挑戰(zhàn)性的性能測試。所以,穩(wěn)定性、性能都無法讓市場信服。結(jié)果就是:稍微重要一點的系統(tǒng)根本沒人敢用。”
另外,曉軍說,當年國貨往往模仿 Oracle,追求大而全,而技術(shù)創(chuàng)新不足、沒有特點。相比之下,1990 年代的美國小廠商極富創(chuàng)新力,開辟了一些全新的技術(shù)方向,在與甲骨文等巨頭的競爭中成功活了下來。
“這個年代,開源 DBMS 的源代碼可以隨便下載,國內(nèi)應(yīng)該不會有新的入場者再去做傳統(tǒng)的 DBMS 了。”羅曦光說。
浩瀚代碼的背后,是浩瀚人才
“Oracle 的數(shù)據(jù)庫軟件……代碼量堪稱浩瀚。”曉軍說,“Oracle 最有特色的地方就是功能非常繁多,語句極端豐富,即便大部分都不常用。”
曉軍說,小公司在這一點上試圖比肩甲骨文,猶如“乞丐與龍王爺比富”。
曉軍舉例說:“Informix 的主要模塊的源代碼就有 2000 多萬行,Informix 當年在美國的核心研發(fā)隊伍就有超過 200 人,加上測試和周邊團隊,不下 500 人。”
而國內(nèi)付費使用 IBM 公司的 Informix 源代碼的幾家企業(yè),相關(guān)隊伍都不超過 40 人,曉軍說,要快速追趕世界先進水平,閱讀代碼的團隊規(guī)模應(yīng)該超過寫代碼的團隊。因此國內(nèi)“面對十年前的巨量代碼一籌莫展,要弄通又得花很多年。”
而羅曦光認為,盡管國內(nèi)公司沒有可以比肩甲骨文的,但“在參與開源軟件的意義上,中國不是沒有入場的資格。這是一個技術(shù)充分交流與共享的時代。”
羅曦光說,目前開源的 RDBMS(如 MariaDB)就有國內(nèi)軟件開發(fā)人員大力支持,與大數(shù)據(jù)平臺緊密關(guān)聯(lián)的 NoSQL 數(shù)據(jù)庫(如 HBase)的開發(fā)社區(qū)里也活躍著中國開發(fā)人員的身影。以阿里云為代表的國內(nèi)云服務(wù)的底層,也包含借鑒開源系統(tǒng)打造的數(shù)據(jù)庫管理系統(tǒng)。
“今時今日,一個全新的公司來做項目,可能不會選擇國外廠商付費的 DBMS。比如互聯(lián)網(wǎng)的初創(chuàng)企業(yè),大概率會選擇國內(nèi)廠商的基于云服務(wù)的包含 DBMS 的整體方案。”羅曦光說。