Oracle已稱霸數(shù)據(jù)庫世界多年,但在未來,霸權(quán)的衰落不可避免的。在NoSQL和大數(shù)據(jù)浪潮的沖擊下,基于邏輯范式設(shè)計的RDBMS已然搖搖欲墜。雖然Oracle及其盟友已經(jīng)做出了快速的反映,并推出了自己的NoSQL數(shù)據(jù)庫,但是Oracle所面對的尷尬情形就如同當(dāng)年的Novell一樣。


關(guān)系型數(shù)據(jù)庫不會立刻消亡,它是一種影響深遠的技術(shù),在數(shù)據(jù)庫領(lǐng)域曾獨領(lǐng)風(fēng)騷。關(guān)系型數(shù)據(jù)庫有著嚴密的數(shù)學(xué)背景,其事務(wù)處理具有著名的ACID屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。


但我并不認為事務(wù)處理是關(guān)系型數(shù)據(jù)庫的優(yōu)勢。事務(wù)處理跨越多個請求和響應(yīng)周期,保證數(shù)據(jù)一致性的能力往往被夸大了。除了事務(wù)處理機制,我們還有其它方法保證數(shù)據(jù)一致性。


關(guān)系型數(shù)據(jù)庫最大的優(yōu)勢其實是標準化。關(guān)系型數(shù)據(jù)庫自身的發(fā)展史也證明,即便是最基本的標準化也比漫無章法更能占據(jù)市場。事實上,標準化也成為數(shù)據(jù)庫融合、收購的極大障礙。


從關(guān)系型數(shù)據(jù)庫到NoSQL的過渡是不可避免的。關(guān)系型數(shù)據(jù)庫早在硬盤只有10MB的時代就被創(chuàng)造出來,而在現(xiàn)在,存儲已經(jīng)非常便宜,我們對性能和擴展性的期望也變得非常高。另一方面,隨著互聯(lián)網(wǎng)信息的膨脹,我們對數(shù)據(jù)分析和數(shù)據(jù)挖掘的要求也與日俱增。毫無疑問,在互聯(lián)網(wǎng)時代,NoSQL才是數(shù)據(jù)庫的未來。


許多公司并不具備能力極強的IT部門,也有許多公司通過外包的方式維持IT的運營。以O(shè)racle數(shù)據(jù)庫為例,在許多公司可能很缺乏具備專業(yè)知識的DBA,甚至其職責(zé)往往由系統(tǒng)管理員代理。傳統(tǒng)數(shù)據(jù)庫的復(fù)雜度成為阻礙公司發(fā)展的瓶頸。


所有的一切都意味著,我們不必使用結(jié)構(gòu)化的數(shù)據(jù),我們追求數(shù)據(jù)庫的分布式、低延遲,以及快速處理海量數(shù)據(jù)的能力。


然而,這種轉(zhuǎn)變困難重重。NoSQL缺乏一種主導(dǎo)力量。以關(guān)系型數(shù)據(jù)庫為例,不管你選擇哪種數(shù)據(jù)庫產(chǎn)品(例如,DB2、Oracle或者SQL Server),它們都會遵循ANSI SQL標準,這讓我們有所依賴。對于新的數(shù)據(jù)庫,Pig、Hive等查詢語言,也讓我們覺得有共通之處。關(guān)系型數(shù)據(jù)庫為我們提供了標準的訪問接口,即便是最古老的ODBC。而對于NoSQL,你必須使用特定的數(shù)據(jù)庫連接器。


大家都知道,NoSQL并不是為所有人設(shè)計的,但是標準的設(shè)計有助于市場的拓展。不論是對于可能成為潛在客戶的大型機構(gòu),還是對于獨立的風(fēng)險投資商,標準化的產(chǎn)品、供應(yīng)商、長期的技術(shù)支持都是吸引其注意力的籌碼。當(dāng)今,幾乎沒有人樂意采購昂貴的軟件,但標準化仍然可以為技術(shù)的發(fā)展提供良好的空間。


為什么NoSQL要與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫一決雌雄?原因就在于爭奪數(shù)據(jù)庫驅(qū)動SPI(服務(wù)編程接口)和API對主要編程語言平臺的支持,這和構(gòu)建標準化的查詢語言別無二致。


不必追求完美的標準。關(guān)系型數(shù)據(jù)庫供應(yīng)商也沒有在標準化方面做到盡善盡美,NoSQL只要將標準化做到足夠好,足夠吸引人,以至于人們樂意遷移到NoSQL平臺就可以了。另一方面,我們要考慮到如何為不同類型的NoSQL數(shù)據(jù)庫制定標準,比如文檔類型的MongoDB,圖形數(shù)據(jù)庫Neo4j。


對圖形數(shù)據(jù)庫設(shè)計的查詢語言不一定適用于文檔數(shù)據(jù)庫或鍵值結(jié)構(gòu)數(shù)據(jù)庫。當(dāng)然,在常規(guī)情況下,我們的查詢都很簡單,非常容易得到支持。這些非關(guān)系型數(shù)據(jù)庫也有許多共通之處,例如,它們都支持層次化查詢(hierarchical query)。我認為,一種標準不是一種強制,而是一種建議。


微軟的一些研究人員也曾提出NoSQL的標準化問題。他們曾試圖使MongoDB支持UnQL和LINQ。在Java的世界里,Spring Data是通用的CRUD接口,但一切還沒有眉目。


NoSQL供應(yīng)商及所有NoSQL支持者是時候走到一起了!乘風(fēng)破浪,共同制定NoSQL的標準,迎接NoSQL的未來!

分享到

hanrui

相關(guān)推薦