本文轉(zhuǎn)自Java開(kāi)源大全,列舉了與Java相關(guān)的NoSQL數(shù)據(jù)庫(kù),其中包括Java寫成的,Java版本的,或者能與Java緊密結(jié)合的各種NoSQL數(shù)據(jù)庫(kù)。對(duì)列舉到的NoSQL都進(jìn)行了比較詳盡的描述。推薦給各位使用Java的朋友們。

HBase
HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),該技術(shù)來(lái)源于Chang etal所撰寫的Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)”。就像Bigtable利用了Googl文件系統(tǒng)(FileSystem)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù).另一個(gè)不同的是HBase基于列的而不是基于行的模式。HBase使用和Bigtable非常相同的數(shù)據(jù)模型。用戶存儲(chǔ)數(shù)據(jù)行在一個(gè)表里。一個(gè)數(shù)據(jù)行擁有一個(gè)可選擇的鍵和任意數(shù)量的列。表是疏松的存儲(chǔ)的,因此用戶可以給行定義各種不同的列。HBase主要用于需要隨機(jī)訪問(wèn),實(shí)時(shí)讀寫你的大數(shù)據(jù)(Big Data)。
收錄時(shí)間:2011-04-18 11:18:58
Berkeley DB Java Edition
Berkeley DB Java Edition(JE)是一個(gè)完全用JAVA寫的,它適合于管理海量的,簡(jiǎn)單的數(shù)據(jù)。能夠高效率的處理1到1百萬(wàn)條記錄,制約JE數(shù)據(jù)庫(kù)的往往是硬件系而不是JE本身。多線程支持,JE使用超時(shí)的方式來(lái)處理線程間的死瑣問(wèn)題。Database都采用簡(jiǎn)單的key/value對(duì)應(yīng)的形式。事務(wù)支持。允許創(chuàng)建二級(jí)庫(kù)。這樣我們就可以方便的使用一級(jí)key,二級(jí)key來(lái)訪問(wèn)我們的數(shù)據(jù)。支持RAM緩沖,這樣就能減少頻繁的IO操作。支持日志。數(shù)據(jù)備份和恢復(fù)。游標(biāo)支持。
Neo4j
Neo4j是一個(gè)嵌入式,基于磁盤的,支持完整事務(wù)的Java持久化引擎,它在圖像中而不是表中存儲(chǔ)數(shù)據(jù)。Neo4j提供了大規(guī)模可擴(kuò)展性,在一臺(tái)機(jī)器上可以處理數(shù)十億節(jié)點(diǎn)/關(guān)系/屬性的圖像,可以擴(kuò)展到多臺(tái)機(jī)器并行運(yùn)行。相對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),圖形數(shù)據(jù)庫(kù)善于處理大量復(fù)雜、互連接、低結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)變化迅速,需要頻繁的查詢——在關(guān)系數(shù)據(jù)庫(kù)中,這些查詢會(huì)導(dǎo)致大量的表連接,因此會(huì)產(chǎn)生性能上的問(wèn)題。Neo4j重點(diǎn)解決了擁有大量連接的傳統(tǒng)RDBMS在查詢時(shí)出現(xiàn)的性能衰退問(wèn)題。通過(guò)圍繞圖形進(jìn)行數(shù)據(jù)建模,Neo4j會(huì)以相同的速度遍歷節(jié)點(diǎn)與邊,其遍歷速度與構(gòu)成圖形的數(shù)據(jù)量沒(méi)有任何關(guān)系。此外,Neo4j還提供了非常快的圖形算法、推薦系統(tǒng)和OLAP風(fēng)格的分析,而這一切在目前的RDBMS系統(tǒng)中都是無(wú)法實(shí)現(xiàn)的。
Neo是一個(gè)網(wǎng)絡(luò)——面向網(wǎng)絡(luò)的數(shù)據(jù)庫(kù)——也就是說(shuō),它是一個(gè)嵌入式的、基于磁盤的、具備完全的事務(wù)特性的Java持久化引擎,但是它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中。網(wǎng)絡(luò)(從數(shù)學(xué)角度叫做圖)是一個(gè)靈活的數(shù)據(jù)結(jié)構(gòu),可以應(yīng)用更加敏捷和快速的開(kāi)發(fā)模式。
你可以把Neo看作是一個(gè)高性能的圖引擎,該引擎具有成熟和健壯的數(shù)據(jù)庫(kù)的所有特性。程序員工作在一個(gè)面向?qū)ο蟮摹㈧`活的網(wǎng)絡(luò)結(jié)構(gòu)下而不是嚴(yán)格、靜態(tài)的表中——但是他們可以享受到具備完全的事務(wù)特性、企業(yè)級(jí)的數(shù)據(jù)庫(kù)的所有好處。
由于使用了“面向網(wǎng)絡(luò)的數(shù)據(jù)庫(kù)”,人們對(duì)Neo充滿了好奇。在該模型中,以“節(jié)點(diǎn)空間”來(lái)表達(dá)領(lǐng)域數(shù)據(jù)——相對(duì)于傳統(tǒng)的模型表、行和列來(lái)說(shuō),節(jié)點(diǎn)空間是很多節(jié)點(diǎn)、關(guān)系和屬性(鍵值對(duì))構(gòu)成的網(wǎng)絡(luò)。關(guān)系是第一級(jí)對(duì)象,可以由屬性來(lái)注解,而屬性則表明了節(jié)點(diǎn)交互的上下文。網(wǎng)絡(luò)模型完美的匹配了本質(zhì)上就是繼承關(guān)系的問(wèn)題域,例如語(yǔ)義Web應(yīng)用。Neo的創(chuàng)建者發(fā)現(xiàn)繼承和結(jié)構(gòu)化數(shù)據(jù)并不適合傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)模型:
1.對(duì)象關(guān)系的不匹配使得把面向?qū)ο蟮?#8220;圓的對(duì)象”擠到面向關(guān)系的“方的表”中是那么的困難和費(fèi)勁,而這一切是可以避免的。
2.關(guān)系模型靜態(tài)、剛性、不靈活的本質(zhì)使得改變schemas以滿足不斷變化的業(yè)務(wù)需求是非常困難的。由于同樣的原因,當(dāng)開(kāi)發(fā)小組想應(yīng)用敏捷軟件開(kāi)發(fā)時(shí),數(shù)據(jù)庫(kù)經(jīng)常拖后腿。
3.關(guān)系模型很不適合表達(dá)半結(jié)構(gòu)化的數(shù)據(jù)——而業(yè)界的分析家和研究者都認(rèn)為半結(jié)構(gòu)化數(shù)據(jù)是信息管理中的下一個(gè)重頭戲。
4.網(wǎng)絡(luò)是一種非常高效的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。人腦是一個(gè)巨大的網(wǎng)絡(luò),萬(wàn)維網(wǎng)也同樣構(gòu)造成網(wǎng)狀,這些都不是巧合。關(guān)系模型可以表達(dá)面向網(wǎng)絡(luò)的數(shù)據(jù),但是在遍歷網(wǎng)絡(luò)并抽取信息的能力上關(guān)系模型是非常弱的。
雖然Neo是一個(gè)比較新的開(kāi)源項(xiàng)目,但它已經(jīng)在具有1億多個(gè)節(jié)點(diǎn)、關(guān)系和屬性的產(chǎn)品中得到了應(yīng)用,并且能滿足企業(yè)的健壯性和性能的需求:
完全支持JTA和JTS、2PC分布式ACID事務(wù)、可配置的隔離級(jí)別和大規(guī)模、可測(cè)試的事務(wù)恢復(fù)。這些不僅僅是口頭上的承諾:Neo已經(jīng)應(yīng)用在高請(qǐng)求的24/7環(huán)境下超過(guò)3年了。它是成熟、健壯的,完全達(dá)到了部署的門檻。
NeoDatis ODB
NeoDatis ODB是一個(gè)面向?qū)ο髷?shù)據(jù)庫(kù),一個(gè)真正透明的對(duì)象持久層。利用一行簡(jiǎn)單的代碼就能夠持久化native object。ODB非常簡(jiǎn)單、非常快并自帶強(qiáng)大查詢語(yǔ)言。ODB既可以做為一個(gè)內(nèi)嵌數(shù)據(jù)庫(kù)引擎使用,也可以以C/S模式運(yùn)行。
Apache Cassandra
Apache Cassandra是一套開(kāi)源分布式Key-Value存儲(chǔ)系統(tǒng)。它最初由Facebook開(kāi)發(fā),用于儲(chǔ)存特別大的數(shù)據(jù)。Cassandra不是一個(gè)數(shù)據(jù)庫(kù),它是一個(gè)混合型的非關(guān)系的數(shù)據(jù)庫(kù),類似于Google的BigTable。本文主要從以下五個(gè)方面來(lái)介紹Cassandra:Cassandra的數(shù)據(jù)模型、安裝和配制Cassandra、常用編程語(yǔ)言使用Cassandra來(lái)存儲(chǔ)數(shù)據(jù)、Cassandra集群搭建。Cassandra是一個(gè)混合型的非關(guān)系的數(shù)據(jù)庫(kù),類似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存儲(chǔ)系統(tǒng))更豐富,但支持度卻不如文檔存儲(chǔ)MongoDB(介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的開(kāi)源產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。)Cassandra最初由Facebook開(kāi)發(fā),后轉(zhuǎn)變成了開(kāi)源項(xiàng)目。它是一個(gè)網(wǎng)絡(luò)社交云計(jì)算方面理想的數(shù)據(jù)庫(kù)。以Amazon專有的完全分布式的Dynamo為基礎(chǔ),結(jié)合了GoogleBigTable基于列族(Column Family)的數(shù)據(jù)模型。P2P去中心化的存儲(chǔ)。很多方面都可以稱之為Dynamo 2.0。
Cassandra的數(shù)據(jù)模型是基于列族(Column Family)的四維或五維模型。它借鑒了Amazon的Dynamo 和Google’s BigTable 的數(shù)據(jù)結(jié)構(gòu)和功能特點(diǎn),采用Memtable和SSTable的方式進(jìn)行存儲(chǔ)。在Cassandra寫入數(shù)據(jù)之前,需要先記錄日志( CommitLog),然后數(shù)據(jù)開(kāi)始寫入到Column Family對(duì)應(yīng)的 Memtable中,Memtable是一種按照key排序數(shù)據(jù)的內(nèi)存結(jié)構(gòu),在滿足一定條件時(shí),再把Memtable的數(shù)據(jù)批量的刷新到磁盤上,存儲(chǔ)為SSTable。
Voldemort
Voldemort是一個(gè)分布式鍵-值(Key-value)存儲(chǔ)系統(tǒng),是Amazon’s Dynamo的一個(gè)開(kāi)源克隆。
1.支持自動(dòng)復(fù)制數(shù)據(jù)到多個(gè)服務(wù)器上。
2.支持?jǐn)?shù)據(jù)自動(dòng)分割所以每個(gè)服務(wù)器只包含總數(shù)據(jù)的一個(gè)子集。
3.提供服務(wù)器故障透明處理功能。
4.支持可撥插的序化支持,以實(shí)現(xiàn)復(fù)雜的鍵-值存儲(chǔ),它能夠很好的5.集成常用的序化框架如:Protocol Buffers、Thrift、Avro和Java Serialization。
5.數(shù)據(jù)項(xiàng)都被標(biāo)識(shí)版本能夠在發(fā)生故障時(shí)盡量保持?jǐn)?shù)據(jù)的完整性而不會(huì)影響系統(tǒng)的可用性。
6.每個(gè)節(jié)點(diǎn)相互獨(dú)立,互不影響。
7.支持可插拔的數(shù)據(jù)放置策略。
Perst
Perst 是一個(gè)面向?qū)ο蟮拈_(kāi)源嵌入式數(shù)據(jù)庫(kù)軟件,能夠有效的處理移動(dòng)設(shè)備上的大量數(shù)據(jù)。Perst 是McObject公司發(fā)布的一款非常袖珍的開(kāi)源嵌入式數(shù)據(jù)庫(kù),是一個(gè)簡(jiǎn)單,快速,便捷,面向?qū)ο螅m合java與.NET的數(shù)據(jù)庫(kù)。Perst不需要專門的編譯器與預(yù)處理器,支持ACID事務(wù)。對(duì)于在資源受限的移動(dòng)設(shè)備(如手機(jī),PDA等)上存儲(chǔ)大量數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行頻繁的IO操作往往要消耗很多的設(shè)備資源。由于移動(dòng)設(shè)備內(nèi)存小,性能較差,如果采用關(guān)系數(shù)據(jù)庫(kù)(如SQLServer2000, Oracle)管理數(shù)據(jù),僅靠其有限的內(nèi)存資源是不能運(yùn)行這些數(shù)據(jù)庫(kù)管理系統(tǒng)的,這樣就有必要采用一些特殊的數(shù)據(jù)庫(kù)系統(tǒng)。Perst數(shù)據(jù)庫(kù)正是為這類設(shè)備研究開(kāi)發(fā)的,它們的作用是在資源受限的設(shè)備上完成大量數(shù)據(jù)的訪問(wèn)操作。其實(shí)這些設(shè)備系統(tǒng)資源主要消耗在從磁盤上讀取數(shù)據(jù)的IO操作。如何提供一種有效的文件存儲(chǔ)策略來(lái)降低對(duì)磁盤的IO操作是嵌入式數(shù)據(jù)庫(kù)軟件設(shè)計(jì)的主要任務(wù)。
像其他嵌入式數(shù)據(jù)庫(kù)一樣,Perst沒(méi)有管理上的代價(jià),但不同的是Perst直接將對(duì)象以Java或者C#對(duì)象的形式進(jìn)行存儲(chǔ)。因此不需要在對(duì)象的內(nèi)部表現(xiàn)形式和Java/C#表現(xiàn)形式之間轉(zhuǎn)換。這個(gè)數(shù)據(jù)庫(kù)引擎非常精悍,只有約5000行代碼,McObject對(duì)此感到驕傲。根據(jù)訪問(wèn)模式不同,運(yùn)行時(shí)需要30K到300K的內(nèi)存。
Terrastore
Terrastore是一個(gè)基于Terracotta(一個(gè)業(yè)界公認(rèn)的、快速的分布式集群組件)實(shí)現(xiàn)的高性能分布式文檔數(shù)據(jù)庫(kù)。可以動(dòng)態(tài)從運(yùn)行中的集群添加/刪除節(jié)點(diǎn),而且不需要停機(jī)和修改任何配置。支持通過(guò)http協(xié)議訪問(wèn)Terrastore。Terrastore提供了一個(gè)基于集合的鍵/值接口來(lái)管理JSON文檔并且不需要預(yù)先定義JSON文檔的架構(gòu)。易于操作,安裝一個(gè)完整能夠運(yùn)行的集群只需幾行命令。
HyperGraphDB
HyperGraphDB是一個(gè)通用,可擴(kuò)展,可移植的,分布式,可嵌入的開(kāi)源數(shù)據(jù)存儲(chǔ)機(jī)制。專為人工智能和語(yǔ)義Web項(xiàng)目而設(shè)計(jì)。它也可以用來(lái)作為一個(gè)適用于各種規(guī)模項(xiàng)目的嵌入式面向?qū)ο髷?shù)據(jù)庫(kù)。HyperGraphDB是一個(gè)基于Java的產(chǎn)品,構(gòu)建在BerkeleyDB存儲(chǔ)類庫(kù)之上。它的主要特性包括:
1.支持廣義圖存儲(chǔ)。開(kāi)放,可擴(kuò)展的類型系統(tǒng)。
2.基本查詢系統(tǒng)和圖形的遍歷算法。
3.支持Java對(duì)象直接存儲(chǔ)。
4.線程安全的事務(wù)處理。
5.提供P2P框架實(shí)現(xiàn)數(shù)據(jù)分發(fā)。
OrientDB
OrientDB是兼具文擋數(shù)據(jù)庫(kù)的靈活性和圖形數(shù)據(jù)庫(kù)管理鏈接能力的可深層次擴(kuò)展的文檔-圖形數(shù)據(jù)庫(kù)管理系統(tǒng)。可選無(wú)模式、全模式或混合模式下。支持許多高級(jí)特性,諸如ACID事務(wù)、快速索引,原生和SQL查詢功能。可以JSON格式導(dǎo)入、導(dǎo)出文檔。若不執(zhí)行昂貴的JOIN操作的話,如同關(guān)系數(shù)據(jù)庫(kù)可在幾毫秒內(nèi)可檢索數(shù)以百記的鏈接文檔圖。
HandlerSocket client for java
HandlerSocket是一個(gè)MySql插件,可以將mysql作為NoSQL來(lái)使用。通過(guò)這個(gè)插件,你可以直接跟MySql后端的存儲(chǔ)引擎做key-value式的交互,省去了MySql上層的SQL解釋、打開(kāi)關(guān)閉表、創(chuàng)建查詢計(jì)劃等CPU消耗型的開(kāi)銷。hs4j是HandlerSocket的一個(gè)java客戶端。HS4J的使用很簡(jiǎn)單,所有的操作都通過(guò)HSClient這個(gè)接口進(jìn)行。HS4J同樣支持連接池,可以在構(gòu)建客戶端的時(shí)候傳入連接池大小。
相關(guān)文章:http://rdc.taobao.com/team/jm/archives/545
Tair:淘寶的key/value解決方案
Tair是一個(gè)分布式的key/value結(jié)構(gòu)數(shù)據(jù)的解決方案,系統(tǒng)默認(rèn)支持基于內(nèi)存和文件的存儲(chǔ)引擎,對(duì)應(yīng)于通常我們所說(shuō)的緩存和持久化存儲(chǔ)。
Tair具有良好的架構(gòu),使得其在可擴(kuò)展性、數(shù)據(jù)安全性方面都有較好的表現(xiàn):
1.基于對(duì)照表的靈活、良好的可擴(kuò)展性
2.輕量級(jí)的configserver
3.抽象的存儲(chǔ)引擎層,支持添加新的存儲(chǔ)引擎
4.自動(dòng)的復(fù)制和遷移,對(duì)用戶透明
5.多機(jī)架和多數(shù)據(jù)中心的支持
6.插件容器
Tair除了基本的key/value操作外,還提供了一些實(shí)用的功能,使得其適用的場(chǎng)景更多:
1.數(shù)據(jù)的version支持
2.原子計(jì)數(shù)器支持
3.item支持
相關(guān)文章:http://rdc.taobao.com/blog/cs/?p=302#more-302
LucidDB
LucidDB是唯一一款專注于數(shù)據(jù)倉(cāng)庫(kù)和商務(wù)智能的開(kāi)源RDBMS,它使用了列存儲(chǔ)架構(gòu),支持位圖索引,哈希連接/聚合和頁(yè)面級(jí)多版本,大部分?jǐn)?shù)據(jù)庫(kù)最初都注重事務(wù)處理能力,而分析功能都是后來(lái)才加上去的。相反,LucidDB中的所有組件從一開(kāi)始就是為滿足靈活的需求,高性能數(shù)據(jù)集成和大規(guī)模數(shù)據(jù)查詢而設(shè)計(jì)的,此外,其架構(gòu)設(shè)計(jì)徹底從用戶出發(fā),操作簡(jiǎn)單,完全無(wú)需DBA。
LucidDB對(duì)硬件要求也極低,即使不搭建集群環(huán)境,在單一的Linux或Windows服務(wù)器上也能獲得極好的性能。最新版本還加入了對(duì)Mac OS X和Windows 64位的支持,官方網(wǎng)站上的文檔和教程也非常豐富,非常值得你體驗(yàn)一下。

Couchdb4j
Couchdb4j是一個(gè)Java開(kāi)源類庫(kù)用于與基于JSON的CouchDB數(shù)據(jù)庫(kù)交互。
原文出自:open-open.com