10個出色的NoSQL數據庫

 雖然NoSQL流行語火起來才短短一年的時間,但是不可否認,現在已經開始了第二代運動。儘管早期的堆棧代碼只能算是一種實驗,然而現在的系統已經更加的成熟、穩定。不過現在也面臨着一個嚴酷的事實:技術越來越成熟——以至於原來很好的NoSQL數據存儲不得不進行重寫,也有少數人認爲這就是所謂的2.0版本。這裏列出一些比較知名的工具,可以爲大數據建立快速、可擴展的存儲庫。

1. Casssandra

Cassandra最初由Facebook開發,後來成了Apache開源項目,它是一個網絡社交雲計算方面理想的數據庫。它集成了其他的流行工具如Solr,現在已經成爲一個完全成熟的大型數據存儲工具。Cassandra是一個混合型的非關係的數據庫,類似於Google的BigTable。其主要功能比Dynomite(分佈式的Key-Value存儲系統)更豐富,但支持度卻不如文檔存儲MongoDB。Cassandra的主要特點就是它不是一個數據庫,而是由一堆數據庫節點共同構成的一個分佈式網絡服務,對Cassandra的一個寫操作,會被複制到其他節點上去,而對Cassandra的讀操作,也會被路由到某個節點上面去讀取。在最近的一次測試中,Netflix建立了一個288個節點的集羣

2. Lucene/Solr

Lucene是Apache軟件基金會4 jakarta項目組的一個子項目,這是一個開放源代碼的全文檢索引擎工具包,就是說它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構。不過大多數人並不認同Lucene是一個數據庫,因爲大多數人只是用它來檢索大量的文本塊,不過它的確採用了與其他NoSQL數據存儲相似的模型。如果說查詢並不是僅僅侷限於精確的匹配,而是尋找出那些出現在塊中的字或者字段的話,毫無疑問,Lucene/Solr是最好的查詢方式。

3. Riak

Riak是由技術公司basho開發的一個類似Dynamo的分佈式Key-Value系統。其以分佈式,水平擴展性,高容錯性等特點著稱。從事Riak工作最有趣的部分是可以使用JavaScript或者Erlang來做Map/Reduce查詢,它們會查詢每個節點,收集結果,而且可以重複,如果需要使用的結果進行重新進行搜尋的話。該系統還爲類似於Solr的搜索提供全文索引,同時還提供一個控制面板,可以查看集羣的信息。

4. CouchDB

CouchDB是用Erlang開發的面向文檔的數據庫系統,不過它不是一個傳統的關係數據庫,而是面向文檔的數據庫,其數據存儲方式有點類似lucene的index文件格式,CouchDB最大的意義在於它是一個面向web應用的新一代存儲系統。作爲一個分佈式的數據庫,CouchDB可以把存儲系統分佈到n臺物理的節點上面,並且很好的協調和同步節點之間的數據讀寫一致性。CouchDB支持REST API,可以讓用戶使用JavaScript來操作CouchDB數據庫,也可以用JavaScript編寫查詢語句,可以想像一下,用AJAX技術結合CouchDB開發出來的CMS系統會是多麼的簡單和方便。

CouchDB還有一個更加商業化的“表親”——Couchbase,不過它提供緩存功能,更好的分片,增量查詢,更好的索引和一些其他的功能。其實Couchbase與CouchDB也是緊密相關的,Couchbase產品包含了CouchDB的一個副本。

5. Neo4J

大多數的NoSQL數據庫只是存儲鍵和值的一個靈活的捆綁。不過Neo4J的存儲的是對象之間的關係,或者說這種結構就是數學中的“圖”。Neo4J是一個面向網絡(“圖”)的數據庫,也就是說,它是一個嵌入式的、基於磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡上而不是表中,當然也可以把Neo4J看作是一個高性能的圖引擎,該引擎具有成熟和健壯的數據庫的所有特性。該工具包括很多有關搜索和分析的關係的算法,它能夠幫助尋找誰是我的朋友,或者尋找朋友的朋友。這些“圖的遍歷”算法,可以節省很多指針查詢的麻煩。

6. Oracle的NoSQL

也許是NoSQL運動太紅火的原因,Oracle決定開發一款產品,將鍵/值對拆分在整個節點集上,這樣的優勢在於提供了一個靈活的事務保護措施,進而可以確保從數據在節點上等待存儲開始到通過網絡被成功備份結束,都盡在掌握之中。

Oracle的NoSQL Database,是在10月4號的甲骨文全球大全上發佈的Big Data Appliance的其中一個組件,Big Data Appliance是一個集成了Hadoop、NoSQL Database、Oracle數據庫Hadoop適配器、Oracle數據庫Hadoop裝載器及R語言的系統。

7. MongoDB

MongoDB是一個基於分佈式文件存儲的數據庫,介於關係數據庫和非關係數據庫之間,是非關係數據庫當中功能最豐富,最像關係數據庫的。MongoDB最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。MongoDB支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。

MongoDB是高性能開源文檔數據庫,也是目前最受關注的NoSQL技術之一,以敏捷、可擴展和對企業應用友好(支持事務,一致性和數據完整性保證,有大企業應用案例)而著稱。有人甚至認爲LAMP中的M應該用MongoDB取代MySQL,其火熱程度可見一斑。使用MongoDB的公司包括Foursquare, Craiglist, 迪士尼,SAP,Intuit,EA等,國內淘寶、大衆點評、視覺中國等公司有應用。(最新版MongoDB 2.2下載)

8. Hadoop的HBase的

HBase(Hadoop Database),是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集羣。HBase是Google Bigtable的開源實現,類似Google Bigtable利用GFS作爲其文件存儲系統,HBase利用Hadoop HDFS作爲其文件存儲系統;Google運行MapReduce來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據。

雖然大多數人都認爲Hadoop及其所有的工具都是作爲管理大規模集羣的一種機制,其實不然,Hadoop也包括數據庫,在HBase中也是通過節點來傳播數據。Hadoop的Map /Reduce的架構是非常適合於複雜的計算任務或查詢工作。領土在不斷的擴張,新的數據庫像Accumulo就是Hadoop平臺的一個延伸。(Apache Accumulo是一個可靠的、可伸縮的、高性能的排序分佈式的Key-Value存儲解決方案,基於單元訪問控制以及可定製的服務器端處理。使用Google BigTable設計思路,基於Apache Hadoop、Zookeeper和Thrift構建)

9. BigTable/ Accumulo/ Hypertable

BigTable是非關係的數據庫,是一個稀疏的、分佈式的、持久化存儲的多維度排序Map。Bigtable的設計目的是可靠的處理PB級別的數據,並且能夠部署到上千臺機器上。Bigtable已經實現了下面的幾個目標:適用性廣泛、可擴展、高性能和高可用性。Bigtable已經在超過60個Google的產品和項目上得到了應用,包括Google Analytics、GoogleFinance、Orkut、Personalized Search、Writely和GoogleEarth。

谷歌的BigTable開啓了NoSQL的熱潮,現在很多公司都模仿谷歌的架構搭建了自己的平臺。谷歌的AppEngine用戶可以把鍵/值對存儲在數據庫中,而Hadoop的用戶可以把它們放在Accumulo上,其他的可以使用Hypertable。所有的這些基本上都屬於鍵/值存儲,只不過添加了一些額外的功能,增加了搜索的速度而已。

10. DynamoDB

DynamoDB是亞馬遜的key-value模式的存儲平臺,可用性和擴展性都很好,性能也不錯:讀寫訪問中99.9%的響應時間都在300ms內。DynamoDB的NoSQL解決方案,也是使用鍵/值對存儲的模式,平且通過服務器把所有的數據存儲在SSD上的三個不同的區域。如果有更高的傳輸需求,DynamoDB也可以在後臺添加更多的服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章