天天看點

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

nosql,泛指非關系型的資料庫。

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

1. casssandra

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

最初由facebook開發,後來成了apache開源項目,它是一個網絡社交雲計算方面理想的資料庫。它內建了其他的流行工具如solr,現在已經成為一個完全成熟的大型資料存儲工具。cassandra是一個混合型的非關系的資料庫,類似于google的bigtable。其主要功能比dynomite(分布式的key-value存儲系統)更豐富,但支援度卻不如文檔存儲mongodb。cassandra的主要特點就是它不是一個資料庫,而是由一堆資料庫節點共同構成的一個分布式網絡服務,對cassandra的一個寫操作,會被複制到其他節點上去,而對cassandra的讀操作,也會被路由到某個節點上面去讀取。在最近的一次測試中,。

2. lucene/solr

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

是apache軟體基金會4

jakarta項目組的一個子項目,這是一個開放源代碼的全文檢索引擎工具包,就是說它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構。不過大多數人并不認同lucene是一個資料庫,因為大多數人隻是用它來檢索大量的文本塊,不過它的确采用了與其他nosql資料存儲相似的模型。如果說查詢并不是僅僅局限于精确的比對,而是尋找出那些出現在塊中的字或者字段的話,毫無疑問,lucene/solr是最好的查詢方式。

3. riak

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

是由技術公司basho開發的一個類似dynamo的分布式key-value系統。其以分布式,水準擴充性,高容錯性等特點著稱。從事riak工作最有趣的部分是可以使用javascript或者erlang來做map/reduce查詢,它們會查詢每個節點,收集結果,而且可以重複,如果需要使用的結果進行重新進行搜尋的話。該系統還為類似于solr的搜尋提供全文索引,同時還提供一個控制台,可以檢視叢集的資訊。

4. couchdb

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

是用erlang開發的面向文檔的資料庫系統,不過它不是一個傳統的關系資料庫,而是面向文檔的資料庫,其資料存儲方式有點類似lucene的index檔案格式,couchdb最大的意義在于它是一個面向web應用的新一代存儲系統。作為一個分布式的資料庫,couchdb可以把存儲系統分布到n台實體的節點上面,并且很好的協調和同步節點之間的資料讀寫一緻性。couchdb支援rest

api,可以讓使用者使用javascript來操作couchdb資料庫,也可以用javascript編寫查詢語句,可以想像一下,用ajax技術結合couchdb開發出來的cms系統會是多麼的簡單和友善。

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

5. neo4j

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

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

6. oracle的nosql

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

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

oracle的,是在10月4号的甲骨文全球大全上釋出的big data appliance的其中一個元件,big data

appliance是一個內建了hadoop、nosql

database、oracle資料庫hadoop擴充卡、oracle資料庫hadoop裝載器及r語言的系統。

7. mongodb

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

是一個基于分布式檔案存儲的資料庫,介于關系資料庫和非關系資料庫之間,是非關系資料庫當中功能最豐富,最像關系資料庫的。mongodb最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。mongodb支援ruby,python,java,c++,php,c#等多種語言。

mongodb是高性能開源文檔資料庫,也是目前最受關注的nosql技術之一,以靈活、可擴充和對企業應用友好(支援事務,一緻性和資料完整性保證,有大企業應用案例)而著稱。有人甚至認為lamp中的m應該用mongodb取代mysql,其火熱程度可見一斑。使用mongodb的公司包括foursquare,

craiglist, 迪士尼,sap,intuit,ea等,國内淘寶、大衆點評、視覺中國等公司有應用。(最新版)

8. hadoop的hbase

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

(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

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

bigtable是非關系的資料庫,是一個稀疏的、分布式的、持久化存儲的多元度排序map。bigtable的設計目的是可靠的處理pb級别的資料,并且能夠部署到上千台機器上。bigtable已經實作了下面的幾個目标:适用性廣泛、可擴充、高性能和高可用性。bigtable已經在超過60個google的産品和項目上得到了應用,包括google

analytics、googlefinance、orkut、personalized search、writely和googleearth。

谷歌的bigtable開啟了nosql的熱潮,現在很多公司都模仿谷歌的架構搭建了自己的平台。,而hadoop的使用者可以把它們放在accumulo上,其他的可以使用hypertable。所有的這些基本上都屬于鍵/值存儲,隻不過添加了一些額外的功能,增加了搜尋的速度而已。

10. dynamodb

10個出色的NoSQL資料庫10個出色的NoSQL資料庫

是亞馬遜的key-value模式的存儲平台,可用性和擴充性都很好,性能也不錯:讀寫通路中99.9%的響應時間都在300ms内。dynamodb的nosql解決方案,也是使用鍵/值對存儲的模式,平且通過伺服器把所有的資料存儲在ssd上的三個不同的區域。如果有更高的傳輸需求,dynamodb也可以在背景添加更多的伺服器。

來源于: