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