資源描述:
《10種出色的nosql數(shù)據(jù)庫》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、摘要:隨著大數(shù)據(jù)的不斷發(fā)展,非關(guān)系型的數(shù)據(jù)庫現(xiàn)在成了一個(gè)極其熱門的新領(lǐng)域,非關(guān)系數(shù)據(jù)庫產(chǎn)品的發(fā)展非常迅速?,F(xiàn)今的計(jì)算機(jī)體系結(jié)構(gòu)在數(shù)據(jù)存儲(chǔ)方面要有龐大的水平擴(kuò)展性,而NoSQL也正是致力于改變這一現(xiàn)狀。目前Google的BigTable和Amazon的Dynamo使用的就是NoSQL型數(shù)據(jù)庫,本文介紹了10種出色的NoSQL數(shù)據(jù)庫。雖然NoSQL流行語火起來才短短一年的時(shí)間,但是不可否認(rèn),現(xiàn)在已經(jīng)開始了第二代運(yùn)動(dòng)。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個(gè)嚴(yán)酷的事實(shí):技術(shù)越來越成熟——以至于原來很好的N
2、oSQL數(shù)據(jù)存儲(chǔ)不得不進(jìn)行重寫,也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲(chǔ)庫。1.CasssandraCassandra最初由Facebook開發(fā),后來成了Apache開源項(xiàng)目,它是一個(gè)網(wǎng)絡(luò)社交云計(jì)算方面理想的數(shù)據(jù)庫。它集成了其他的流行工具如Solr,現(xiàn)在已經(jīng)成為一個(gè)完全成熟的大型數(shù)據(jù)存儲(chǔ)工具。Cassandra是一個(gè)混合型的非關(guān)系的數(shù)據(jù)庫,類似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存儲(chǔ)系統(tǒng))更豐富,但支持度卻不如文檔存儲(chǔ)MongoDB。Ca
3、ssandra的主要特點(diǎn)就是它不是一個(gè)數(shù)據(jù)庫,而是由一堆數(shù)據(jù)庫節(jié)點(diǎn)共同構(gòu)成的一個(gè)分布式網(wǎng)絡(luò)服務(wù),對Cassandra的一個(gè)寫操作,會(huì)被復(fù)制到其他節(jié)點(diǎn)上去,而對Cassandra的讀操作,也會(huì)被路由到某個(gè)節(jié)點(diǎn)上面去讀取。在最近的一次測試中,Netflix建立了一個(gè)288個(gè)節(jié)點(diǎn)的集群。2.Lucene/SolrLucene是Apache軟件基金會(huì)4jakarta項(xiàng)目組的一個(gè)子項(xiàng)目,這是一個(gè)開放源代碼的全文檢索引擎工具包,就是說它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu)。不過大多數(shù)人并不認(rèn)同Lucene是一個(gè)數(shù)據(jù)庫,因?yàn)榇蠖鄶?shù)人只是用它來檢索
4、大量的文本塊,不過它的確采用了與其他NoSQL數(shù)據(jù)存儲(chǔ)相似的模型。如果說查詢并不是僅僅局限于精確的匹配,而是尋找出那些出現(xiàn)在塊中的字或者字段的話,毫無疑問,Lucene/Solr是最好的查詢方式。3.RiakRiak是由技術(shù)公司basho開發(fā)的一個(gè)類似Dynamo的分布式Key-Value系統(tǒng)。其以分布式,水平擴(kuò)展性,高容錯(cuò)性等特點(diǎn)著稱。從事Riak工作最有趣的部分是可以使用JavaScript或者Erlang來做Map/Reduce查詢,它們會(huì)查詢每個(gè)節(jié)點(diǎn),收集結(jié)果,而且可以重復(fù),如果需要使用的結(jié)果進(jìn)行重新進(jìn)行搜尋的話。該系統(tǒng)還為類似于Solr的搜
5、索提供全文索引,同時(shí)還提供一個(gè)控制面板,可以查看集群的信息。4.CouchDBCouchDB是用Erlang開發(fā)的面向文檔的數(shù)據(jù)庫系統(tǒng),不過它不是一個(gè)傳統(tǒng)的關(guān)系數(shù)據(jù)庫,而是面向文檔的數(shù)據(jù)庫,其數(shù)據(jù)存儲(chǔ)方式有點(diǎn)類似lucene的index文件格式,CouchDB最大的意義在于它是一個(gè)面向web應(yīng)用的新一代存儲(chǔ)系統(tǒng)。作為一個(gè)分布式的數(shù)據(jù)庫,CouchDB可以把存儲(chǔ)系統(tǒng)分布到n臺(tái)物理的節(jié)點(diǎn)上面,并且很好的協(xié)調(diào)和同步節(jié)點(diǎn)之間的數(shù)據(jù)讀寫一致性。CouchDB支持RESTAPI,可以讓用戶使用JavaScript來操作CouchDB數(shù)據(jù)庫,也可以用JavaScr
6、ipt編寫查詢語句,可以想像一下,用AJAX技術(shù)結(jié)合CouchDB開發(fā)出來的CMS系統(tǒng)會(huì)是多么的簡單和方便。CouchDB還有一個(gè)更加商業(yè)化的“表親”——Couchbase,不過它提供緩存功能,更好的分片,增量查詢,更好的索引和一些其他的功能。其實(shí)Couchbase與CouchDB也是緊密相關(guān)的,Couchbase產(chǎn)品包含了CouchDB的一個(gè)副本。5.Neo4J大多數(shù)的NoSQL數(shù)據(jù)庫只是存儲(chǔ)鍵和值的一個(gè)靈活的捆綁。不過Neo4J的存儲(chǔ)的是對象之間的關(guān)系,或者說這種結(jié)構(gòu)就是數(shù)學(xué)中的“圖”。Neo4J是一個(gè)面向網(wǎng)絡(luò)(“圖”)的數(shù)據(jù)庫,也就是說,它是一
7、個(gè)嵌入式的、基于磁盤的、具備完全的事務(wù)特性的Java持久化引擎,但是它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中,當(dāng)然也可以把Neo4J看作是一個(gè)高性能的圖引擎,該引擎具有成熟和健壯的數(shù)據(jù)庫的所有特性。該工具包括很多有關(guān)搜索和分析的關(guān)系的算法,它能夠幫助尋找誰是我的朋友,或者尋找朋友的朋友。這些“圖的遍歷”算法,可以節(jié)省很多指針查詢的麻煩。6.Oracle的NoSQL也許是NoSQL運(yùn)動(dòng)太紅火的原因,Oracle決定開發(fā)一款產(chǎn)品,將鍵/值對拆分在整個(gè)節(jié)點(diǎn)集上,這樣的優(yōu)勢在于提供了一個(gè)靈活的事務(wù)保護(hù)措施,進(jìn)而可以確保從數(shù)據(jù)在節(jié)點(diǎn)上等待存儲(chǔ)開始到通過網(wǎng)絡(luò)被成功備
8、份結(jié)束,都盡在掌握之中。Oracle的NoSQLDatabase,是在10月4號(hào)的甲骨文全球大全上發(fā)布的Bi