NoSQL的現狀

作者: Stefan Edlich  來源: InfoQ  發布時間: 2013-02-26 21:10  閱讀: 8674 次  推薦: 14   原文鏈接   [收藏]  

  英文原文:The State of NoSQL

  經過了至少4年的激烈爭論,現在是對NoSQL的現狀做一個階段性結論的時候了。圍繞著NoSQL發生了如此之多的事情,以至于很難對其作出一個簡單概括,也很難判斷它達到了什么目標以及在什么方面沒有達到預期。

  在很多領域,NoSQL不僅在行業內也在學術領域中取得了成功。大學開始認識到NoSQL必須要加入到課程中。只是反復講解標準數據庫已經不夠了。當然,這不意味著深入學習關系型數據庫是錯誤的。相反,NoSQL是很好的很重要的補充。

  發生了什么?

  NoSQL領域在短短的4到5年的時間里,爆炸性地產生了50到150個新的數據庫。nosql-database.org列出了150個這樣的數據庫,包括一些像對象數據庫這樣很古老但很強大的。當然,一些有意思的合并正在發生,如CouchDB和Membase交易產生的CouchBase。但是我們稍后會在本文中討論每一個主要的系統。

  很多人都曾經假設在NoSQL領域會有一個巨大地整合。但是這并沒有發生。NoSQL過去是爆炸性地增長,現在依舊如此。就像計算機科學中的所有領域一樣——如編程語言——現在有越來越多的空白領域需要大量的數據庫。這是與互聯網、大數據、傳感器以及將來很多技術的爆炸性增長同步的,這導致了更多的數據以及對它們進行處理的不同需求。在過去的四年中,我們只看到了一個重要的系統離開了舞臺:德國的Graph數據庫Sones。為數眾多的NoSQL依然快樂地生存著,要么在開源社區,不用考慮任何的金錢回報,要么在商業領域。

  可見性與金錢?

  另外一個重要的方面就是可見性與行業采用的情況。在這個方面,我們可以看到在傳統的行業中——要保護投資——與新興的行業(主要是初創公司)之間有很大的差別。幾乎所有熱門的基于Web的創業公司如Pinterest和Instagram 都在使用混合式(SQL + NoSQL)的架構,而傳統的行業依然糾結于是否采用NoSQL。但是觀察顯示,越來越多這樣的公司正在試圖將它們的一部分數據流用NoSQL方案進行處理并在以后進行分析,這樣的方案包括Hadoop、MongoDB以及Cassandra等。

  這同時導致了對具備NoSQL知識的架構師和開發人員的需求持續增長。最近的調查顯示行業中最需要的開發人員技能如下:

  1. HTML5
  2. MongoDB
  3. iOS
  4. Android
  5. Mobile Apps
  6. Puppet
  7. Hadoop
  8. jQuery
  9. PaaS
  10. Social Media

  在前十名的技術需求中,有兩個NoSQL數據庫。有一個甚至排在了iOS前面。如果這不是對它的贊揚,那是什么呢?!

  但是,跟最初預計相比,對NoSQL的采用變得越來越快,越來越深入。在2011年夏天,Oracle曾經發布過一個著名白皮書,它提到NoSQL數據庫感覺就像是冰淇淋的風味,但是你不應該過于依附它,因為它不會持續太長時間。但是僅僅在幾個月之后,Oracle就展現了它們將Hadoop集成到大數據設備的方案。甚至,他們建立了自己的NoSQL數據庫,那是對BerkeleyDB的修改。從此之后,所有的廠商在集成Hadoop方面展開了競賽。Microsoft、Sybase、IBM、Greenplum、Pervasive以及很多的公司都已經對它有了緊密的集成。有一個模式隨處可見:不能擊敗它,就擁抱它。

  但是,關于NoSQL被廣泛采用的另一個很重要但不被大家關注的重要信號就是NoSQL成為了一個PaaS標準。借助于眾多NoSQL數據庫的易安裝和管理,像Redis和MongoDB這樣的數據庫可以在很多的PaaS服務中看到,如Cloud Foundry、OPENSHIFT、dotCloud、Jelastic等。隨著所有的事情都在往云上遷移,NoSQL會對傳統的關系型數據庫產生很大的壓力。例如當面臨選擇MySQL/PostGres或MongoDB/Redis時,將會強制人們再三考慮他們的模型、需求以及隨之而來的其他重要問題。

  另外一個很有意思的技術指示器就是ThoughtWorks的技術雷達,即便你可能不完全同意它所包含的所有事情,但它總會包含一些有意思的事情。讓我們看一下他們2012年10月份的技術雷達,如圖1:

圖1:ThoughtWorks技術雷達,2012年10月——平臺

  在他們的平臺象限中,列出了5個數據庫:

  1. Neo4j (采用)
  2. MongoDB(試用階段但是采用)
  3. Riak(試用)
  4. CouchBase(試用)
  5. Datomic(評估)

  你會發現它們中至少有四個獲得了很多的風險投資。如果你將NoSQL領域的所有風險投資加起來,結果肯定是在一億和十億美元之間!Neo4j就是一個例子,它在一系列的B類資助中得到了一千一百萬美元。其他得到一千萬到三千萬之間資助的公司是Aerospike、Cloudera、DataStax、MongoDB以及CouchBase等。但是,讓我們再看一下這個列表:Neo4j、MongoDB、Riak以及CouchBase已經在這個領域超過四年了,并且在不斷地證明它們是特定需求的市場領導者。第五名的數據庫——Datomic——是一個令人驚訝的全新數據庫,它是由一個小團隊按照全新的范式編寫的。這一定是很熱門的東西,在后面簡要討論所有數據庫的時候,我們更更深入地了解它們。

  標準

  已經有很多人要求NoSQL標準了,但他們沒有看到NoSQL涵蓋了一個范圍如此之大的模型和需求。所以,適用于所有主要領域的統一語言如Wide Column、Key/Value、Document和Graph數據庫肯定不會持續很長時間,因為它不可能涵蓋所有的領域。有一些方式,如Spring Data,試圖建立一個統一層,但這取決于讀者來測試這一層在構建多持久化環境時是不是一個飛躍。

  大多數的Graph和Document數據庫在它們的領域中已經提出了標準。在Graph數據庫世界,因為它的tinkerpop blueprints、Gremlin、Sparql以及Cypher使得它更為成功一些。在Document數據庫領域,UnQL和jaql填補了一些位置,盡管前者缺少現實世界NoSQL數據庫的支持。但是借助Hadoop的力量,很多項目正在將著名的ETL語言如Pig和Hive使用到其他NoSQL數據庫中。所以標準世界是高度分裂的,但這只是因為NoSQL是一個范圍很廣的領域。

  格局

  作為最好的數據庫格局圖之一,是由451 Group的Matt Aslett在一個報告中給出的。最近,他更新了該圖片從而能夠讓我們可以更好得深入理解他所提到的分類。你可以在下面的圖片中看到,這個格局是高度碎片化和重疊的:  圖2:Matt Aslett(451 Group)給出的數據庫格局

  你可以看到在這個圖片中有多個維度。關系型的以及非關系型的、分析型的以及操作型的、NoSQL類型的以及NewSQL類型的。最后的兩個分類中,對于NoSQL有著名的子分類Key-Value、Document、Graph以及Big Tables,而對于NewSQL有子分類Storage-Engine、Clustering-Sharding、New Database、Cloud Service Solution。這個圖有趣的地方在于,將一個數據放在一個精確的位置變得越來越難。每一個都在拼命地集成其他范圍數據庫中的特性。NewSQL系統實現NoSQL的核心特性,而NoSQL越來越多地試圖實現“傳統”數據庫的特性如支持SQL或ACID,至少是可配置的持久化機制。

  這一切都始于眾多的數據庫都提供與Hadoop進行集成。但是,也有很多其他的例子,如MarkLogic開始參與JSON浪潮,所以也很難對其進行定位。另外,更多的多模型數據庫開始出現,如ArangoDB、OrientDB和AlechemyDB(現在它是很有前途的Aerospike DB的一部分)。它們允許在起始的時候只有一個數據庫模型(如document/JSON模型)并在新需求出現的時候添加新的模型(Graph或key-value)。

  圖書

  另外一個證明它開始變得成熟的標志就是圖書市場。在2010年和2011年兩本德語書出版之后,我們看到Wiley出版了Shashank Tiwari的書。它的結構很棒并且飽含了深刻偉大的見解。在2012年,這個競賽圍繞著兩本書展開。“七周七數據庫”(Seven Databases in Seven Weeks)當然是一本杰作。它的特點在于新穎的編寫以及實用的基于親身體驗的見解:它選取了6種著名的NoSQL數據庫以及PostGreSQL。這些都使得它成為一本高度推薦的圖書。另一方面,P.J. Sandalage以及Martin Fowler采取了一種更為全面的方法,涵蓋了所有的特征并幫助你評估采用NoSQL的路徑和決策。

  但是,會有更多的書出現。Manning的書出現在市場上只是個時間問題:Dan McCreary和Ann Kelly正在編寫一本名為“Making Sense of NoSQL”的書,首期的MEAP(指的是Manning Early Access Program——譯者注)章節已經可以看到了。

  在介紹完理念和模式后,他們的第三章看起來保證很有吸引力:

  • 構建NoSQL大數據解決方案
  • 構建NoSQL搜索解決方案
  • 構建NoSQL高可用性解決方案
  • 使用NoSQL來提高敏捷性

  只是一個全新的方式,絕對值得一讀。

  領導者的現狀

  讓我們快速了解一下各個NoSQL的領導者。作為市場上很明顯的領導者之一,Hadoop是一個很奇怪的動物(作者使用這個詞,可能是因為Hadoop的標識是一只大象——譯者注)。一方面,它擁有巨大的發展勢頭。正如前面所說,每個傳統的數據庫提供商都急切地聲明支持Hadoop。像Cloudera和MapR這樣的公司會持續增長并且新的Hadoop擴展和繼承者每周都在出現。

  即便是Hive和Pig也在更好地得到接受。不過,有一個美中不足之處:公司們依然在抱怨非結構化的混亂(讀取和解析文件本應該更快一些),MapReduce在批處理上做的還不夠(甚至Google已經舍棄了它),管理依舊很困難,穩定性問題以及在本地很難找到培訓/咨詢。即便你可以解決一些上面的問題,如果Hadoop繼續像現在這樣發展或發生重大變化的話,它依然會是熱點問題。

  第二位領導者,MongoDB,同樣面臨激烈的爭論。處于領導地位的數據庫會獲得更多的批評,這可能是很自然的事情。不過,MongoDB經歷了快速的增長,它受到的批評主要如下:

  a)就老版本而言或者缺少怎樣正確使用它的知識。盡管MongoDB在下載區域清楚地表明32位版本不能處理2GB的數據并建議使用64位版本,但這依然受到了很多近乎荒謬的抱怨。

  不管怎樣,MongoDB合作者和資助者推動了雄心勃勃的發展路線,包含了很多熱門的東西:

  • 行業需要的一些安全性/LDAP特性,目前正在開發
  • 全文本搜索很快會推出
  • 針對MapReduce的V8將會推出
  • 將會出現比集合級別更好的鎖級別
  • Hash分片鍵正在開發中

  尤其是最后一點吸引了很多架構師的興趣。MongoDB經常被抱怨(同時也被競爭對手)沒有實現簡潔一致的哈希,因為key很容易定義所以不能保證完全正確。但在將來,將會有一個對hash分片鍵的配置。這意味著用戶可以決定使用hash key來分片,還是需要使用自己選擇分片key所帶來的優勢(可能很少)。

  Cassandra是這個領域中的另一個產品,它做的很好并且添加了更多更好的特性,如更好的查詢。但是不斷有傳言說運行Cassandra集群并不容易,需要一些很艱難的工作。但這里最吸引人的肯定是DataStax。Cassandra的新公司——獲得了兩千五百萬美元的C類資助——很可能要處理分析和一些操作方面的問題。尤其是分析能力使得很多人感到驚訝,因為早期的Cassandra并沒有被視為強大的查詢機器。但是這種現狀在最近的幾個版本中發生了變化,查詢功能對一些現代分析來講已經足夠了。

  Redis的開發進度也值得關注。盡管Salvatore聲明如果沒有社區和Pieter Noordhuis的幫助,他做不成任何的事情,但是它依舊是相當棒的一個產品。對故障恢復的良好支持以及使用Lua的服務器端腳本語言是其最近的成就。使用Lua的決策對社區帶來了一些震動,因為每個人都在集成JavaScript作為服務器端的語言。但是,Lua是一個整潔的語言并為Redis開啟新的潘多拉盒子帶來了可能性。

  CouchBase在可擴展性和其他潛在因素方面看起來也是一個很好的選擇,盡管Facebook以及Zynga面臨著巨大的風波。它確實不是很熱門的查詢機器,但如果他們能夠在將來提高查詢能力,那它的功能就會相當完整了。與CouchDB創立者的合并毫無疑問是很重要的一個步驟,CouchDB在CouchBase里面的影響值得關注。在每個關于數據庫的會議上,聽到這樣的討論也是很有意思的,那就是在Damien、Chris和Jan離開后,CouchDB會變得更好呢還是更壞呢?大家在這里只能聽到極端的觀點。但是,只要數據庫做得好誰關心這個呢。現在看起來,它確實做的很好。

  最后一個需要提及的NoSQL數據庫當然是Riak,在功能性和監控方面它也有了巨大的提升。在穩定性方面,它繼續得到巨大的聲譽:“像巨石一般穩定可靠且不顯眼,并對你的睡眠有好處”。Riak CS fork在這種技術的模塊化方面看起來也很有趣。

  有意思的新加入者

  除了市場領導者,評估新的加入者通常是很有意思的。讓我們深入了解它們中的一部分。

  毫無疑問,Elastic Search是最熱門的新NoSQL產品,在一系列的A輪資助中它剛剛獲得了一千萬美元,這是它熱門的一個明證。作為構建在Lucene之上的高擴展性搜索引擎,它有很多的優勢:a)它有一個公司提供服務并且;b)利用了Lucene在過去的多年中已被充分證明的成就。它肯定會比以往更加深入得滲透到整個行業中,并在半結構化信息領域給重要的參與者帶來沖擊。

  Google在這個領域也推出了小巧但是迅速的LevelDB。在很多特殊的需求下,如壓縮集成方面,它作為基礎得到了很多的應用。即使是Riak都集成了LevelDB。考慮到Google的新數據庫如Dremel和Spanner都有了對應的開源項目(如Apache Drill或Cloudera Impala),它依然被視為會繼續存在的。

  另外一個技術變化當然就是在2012年初的DynamoDB。自從部署在Amazon中,他們將其視為增長最快的服務。它的可擴展性很強。新特性開發地比較慢但它關注于SSD,其潛力是很令人振奮的。

  多模塊數據庫也是值得關注的一個領域。最著名的代表者是OrientDB,它現在并不是新的加入者但它在很迅速地提高功能。可能它變化得太快了,很多使用者也許會很開心地看到OrientDB已經到達了1.0版本,希望它能更穩定一些。對Graph、Document、Key-Value的支持以及對事務和SQL的支持,使得我們有理由給它第二次表現的機會。尤其是對SQL的良好支持使得它對諸如Penthao這樣的分析解決方案方面很有吸引力。這個領域另一個新的加入者是ArangoDB,它的進展很快,并不畏懼將自己與已確定地位的參與者進行比較。

  但是,如果有新的需求必須要實現并且具有不同類型的新數據模型要進行持久化的話,對原生JSON和Graph的支持會省去很多的努力。

  到目前位置,2012年的最大驚喜來自于Datomic。它由一些搖滾明星采用Clojure語言以難以令人置信的速度開發的,它發布了一些新的范式。另外,它還進入了ThoughtWorks的技術雷達,占據了推薦關注的位置。盡管它“只是”已有數據庫中一個參與者,但是它有很多的優勢,如:

  • 事務
  • 時間機器
  • 新穎且強大的查詢方式
  • 新的模式方式
  • 緩存以及可擴展性的特性

  目前,支持將DynamoDB、Riak、CouchBase、Infinispan以及SQL作為底層的存儲引擎。它甚至允許你同時混合和查詢不同的數據庫。很多有經驗的人都很驚訝于這種顛覆性的范式轉變是如何可能實現的。但幸運的是它就是這樣。

  總結

  作為總結,我們做出三點結論:

  1. 關于CAP理論,Eric Brewer的一些新文章應該幾年前就發表。在這篇文章中這篇佳文的中文版地址——譯者注),他指出“三選二”具有誤導性,并指出了它的原因,世界為何遠比簡單的CP/AP更為復雜,如在ACID/BASE之間做出選擇。雖然如此,近些年來有成千上萬的對話和文章繼續贊揚CAP理論而沒有任何批評性的反思。Michael Stonebraker是NoSQL最強有力的審查者之一(NoSQL領域也對他頗多感激),他在多年前就指出了這些問題!遺憾的是,沒有多少人在聽。但是,既然Eric Brewer更新了他的理論,簡單的CAP敘述時代肯定要結束了。在指出CAP理論的真實和多樣性的觀點上,請站在時代的前列。

  2. 正如我們所了解的那樣,傳統關系型數據庫的不足導致了NoSQL領域的產生。但這也是傳統帝國發起回擊的時刻。在“NewSQL”這個術語之下,我們可以看到許多新的引擎(如database.com、VoltDB、GenieDB等,見圖2),它們提高了傳統的解決方案、分片以及云計算方案的能力。這要感謝NoSQL運動。

    但是隨著眾多的數據庫嘗試實現所有的特性,明確的邊界消失了

    確定使用哪種數據庫比以前更為復雜了。

    你必須要知道50個用例、50個數據庫并要回答至少50個問題。關于后者,筆者在過去兩年多的NoSQL咨詢中進行了收集,可以在以下地址找到:選擇正確的數據庫在NoSQL和NewSQL間進行選擇

  3. 一個通用的真理就是,每一項技術的變化——從客戶端-服務端技術開始甚至更早——需要十倍的成本才能進行轉移。例如,從大型機到客戶端-服務端、客戶端-服務端到SOA、SOA到WEB、RDBMS到混合型持久化之間的轉換都是如此。所以可以推斷出,在將NoSQL加入到他們的產品決策上,很多的公司在遲疑和糾結。但是,大家也都知道,最先采用的公司會從這個兩個領域獲益并且能夠快速集成NoSQL,所以在將來會占據更有利的位置。就這一點而言,NoSQL解決方案會一直存在并且評估起來會是有利可圖的領域。

  關于作者

  Prof. Dr. Stefan Edlich是德國柏林Beuth HS技術(University of App. Sc.)的高級講師。他為諸多出版社如Apress、OReilly、Spektrum/Elsevier等編寫了超過10本IT圖書。他維護著NoSQL Archive網站, 從事NoSQL咨詢并組織NoSQL技術會議,編寫了世界上最早的兩本NoSQL圖書,現在他熱衷于Clojure編程語言。

14
1
 
標簽:NoSQL
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()