雖然NoSQL流行語火起來才短短一年的時間,但是不可否認,現(xiàn)在已經開始了第二代運動。盡管早期的堆棧代碼只能算是一種實驗,然而現(xiàn)在的系統(tǒng)已經更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個嚴酷的事實:技術越來越成熟——以至于原來很好的NoSQL數據存儲不得不進行重寫,也有少數人認為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數據建立快速、可擴展的存儲庫。
1. Casssandra
Cassandra最初由Facebook開發(fā),后來成了Apache開源項目,它是一個網絡社交云計算方面理想的數據庫。它集成了其他的流行工具如Solr,現(xiàn)在已經成為一個完全成熟的大型數據存儲工具。Cassandra是一個混合型的非關系的數據庫,類似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存儲系統(tǒng))更豐富,但支持度卻不如文檔存儲MongoDB。Cassandra的主要特點就是它不是一個數據庫,而是由一堆數據庫節(jié)點共同構成的一個分布式網絡服務,對Cassandra的一個寫操作,會被復制到其他節(jié)點上去,而對Cassandra的讀操作,也會被路由到某個節(jié)點上面去讀取。在最近的一次測試中,Netflix建立了一個288個節(jié)點的集群。
2. Lucene/Solr
Lucene是Apache軟件基金會4 jakarta項目組的一個子項目,這是一個開放源代碼的全文檢索引擎工具包,就是說它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構。不過大多數人并不認同Lucene是一個數據庫,因為大多數人只是用它來檢索大量的文本塊,不過它的確采用了與其他NoSQL數據存儲相似的模型。如果說查詢并不是僅僅局限于精確的匹配,而是尋找出那些出現(xiàn)在塊中的字或者字段的話,毫無疑問,Lucene/Solr是最好的查詢方式。
3. Riak
Riak是由技術公司basho開發(fā)的一個類似Dynamo的分布式Key-Value系統(tǒng)。其以分布式,水平擴展性,高容錯性等特點著稱。從事Riak工作最有趣的部分是可以使用JavaScript或者Erlang來做Map/Reduce查詢,它們會查詢每個節(jié)點,收集結果,而且可以重復,如果需要使用的結果進行重新進行搜尋的話。該系統(tǒng)還為類似于Solr的搜索提供全文索引,同時還提供一個控制面板,可以查看集群的信息。
4. CouchDB
CouchDB是用Erlang開發(fā)的面向文檔的數據庫系統(tǒng),不過它不是一個傳統(tǒng)的關系數據庫,而是面向文檔的數據庫,其數據存儲方式有點類似lucene的index文件格式,CouchDB最大的意義在于它是一個面向web應用的新一代存儲系統(tǒng)。作為一個分布式的數據庫,CouchDB可以把存儲系統(tǒng)分布到n臺物理的節(jié)點上面,并且很好的協(xié)調和同步節(jié)點之間的數據讀寫一致性。CouchDB支持REST API,可以讓用戶使用JavaScript來操作CouchDB數據庫,也可以用JavaScript編寫查詢語句,可以想像一下,用AJAX技術結合CouchDB開發(fā)出來的CMS系統(tǒng)會是多么的簡單和方便。
CouchDB還有一個更加商業(yè)化的“表親”——Couchbase,不過它提供緩存功能,更好的分片,增量查詢,更好的索引和一些其他的功能。其實Couchbase與CouchDB也是緊密相關的,Couchbase產品包含了CouchDB的一個副本。
5. Neo4J
大多數的NoSQL數據庫只是存儲鍵和值的一個靈活的捆綁。不過Neo4J的存儲的是對象之間的關系,或者說這種結構就是數學中的“圖”。Neo4J是一個面向網絡(“圖”)的數據庫,也就是說,它是一個嵌入式的、基于磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡上而不是表中,當然也可以把Neo4J看作是一個高性能的圖引擎,該引擎具有成熟和健壯的數據庫的所有特性。該工具包括很多有關搜索和分析的關系的算法,它能夠幫助尋找誰是我的朋友,或者尋找朋友的朋友。這些“圖的遍歷”算法,可以節(jié)省很多指針查詢的麻煩。
6. Oracle的NoSQL
也許是NoSQL運動太紅火的原因,Oracle決定開發(fā)一款產品,將鍵/值對拆分在整個節(jié)點集上,這樣的優(yōu)勢在于提供了一個靈活的事務保護措施,進而可以確保從數據在節(jié)點上等待存儲開始到通過網絡被成功備份結束,都盡在掌握之中。
Oracle的NoSQL Database,是在10月4號的甲骨文全球大全上發(fā)布的Big Data Appliance的其中一個組件,Big Data Appliance是一個集成了Hadoop、NoSQL Database、Oracle數據庫Hadoop適配器、Oracle數據庫Hadoop裝載器及R語言的系統(tǒng)。
7. MongoDB
MongoDB是一個基于分布式文件存儲的數據庫,介于關系數據庫和非關系數據庫之間,是非關系數據庫當中功能最豐富,最像關系數據庫的。MongoDB最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現(xiàn)類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。MongoDB支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
MongoDB是高性能開源文檔數據庫,也是目前最受關注的NoSQL技術之一,以敏捷、可擴展和對企業(yè)應用友好(支持事務,一致性和數據完整性保證,有大企業(yè)應用案例)而著稱。有人甚至認為LAMP中的M應該用MongoDB取代MySQL,其火熱程度可見一斑。使用MongoDB的公司包括Foursquare, Craiglist, 迪士尼,SAP,Intuit,EA等,國內淘寶、大眾點評、視覺中國等公司有應用。(最新版MongoDB 2.2下載)
8. Hadoop的HBase的
HBase(Hadoop Database),是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術可在廉價PC Server上搭建起大規(guī)模結構化存儲集群。HBase是Google Bigtable的開源實現(xiàn),類似Google Bigtable利用GFS作為其文件存儲系統(tǒng),HBase利用Hadoop HDFS作為其文件存儲系統(tǒng);Google運行MapReduce來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據。
雖然大多數人都認為Hadoop及其所有的工具都是作為管理大規(guī)模集群的一種機制,其實不然,Hadoop也包括數據庫,在HBase中也是通過節(jié)點來傳播數據。Hadoop的Map /Reduce的架構是非常適合于復雜的計算任務或查詢工作。領土在不斷的擴張,新的數據庫像Accumulo就是Hadoop平臺的一個延伸。(Apache Accumulo是一個可靠的、可伸縮的、高性能的排序分布式的Key-Value存儲解決方案,基于單元訪問控制以及可定制的服務器端處理。使用Google BigTable設計思路,基于Apache Hadoop、Zookeeper和Thrift構建)
9. BigTable/ Accumulo/ Hypertable
BigTable是非關系的數據庫,是一個稀疏的、分布式的、持久化存儲的多維度排序Map。Bigtable的設計目的是可靠的處理PB級別的數據,并且能夠部署到上千臺機器上。Bigtable已經實現(xiàn)了下面的幾個目標:適用性廣泛、可擴展、高性能和高可用性。Bigtable已經在超過60個Google的產品和項目上得到了應用,包括Google Analytics、GoogleFinance、Orkut、Personalized Search、Writely和GoogleEarth。
谷歌的BigTable開啟了NoSQL的熱潮,現(xiàn)在很多公司都模仿谷歌的架構搭建了自己的平臺。谷歌的AppEngine用戶可以把鍵/值對存儲在數據庫中,而Hadoop的用戶可以把它們放在Accumulo上,其他的可以使用Hypertable。所有的這些基本上都屬于鍵/值存儲,只不過添加了一些額外的功能,增加了搜索的速度而已。
10. DynamoDB
DynamoDB是亞馬遜的key-value模式的存儲平臺,可用性和擴展性都很好,性能也不錯:讀寫訪問中99.9%的響應時間都在300ms內。DynamoDB的NoSQL解決方案,也是使用鍵/值對存儲的模式,平且通過服務器把所有的數據存儲在SSD上的三個不同的區(qū)域。如果有更高的傳輸需求,DynamoDB也可以在后臺添加更多的服務器。(編譯/@CSDN王鵬,審校/包研)
原文鏈接:Infoworld
bitsCN.com聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com