Java開源NoSQL數據庫大全

本文轉自Java開源大全,列舉了與Java相關的NoSQL數據庫,其中包括Java寫成的,Java版本的,或者能與Java緊密結合的各種NoSQL數據庫。對列舉到的NoSQL都進行了比較詳盡的描述。推薦給各位使用Java的朋友們。

HBase

HBase是一個分佈式的、面向列的開源數據庫,該技術來源於Chang etal所撰寫的Google論文“Bigtable:一個結構化數據的分佈式存儲系統”。就像Bigtable利用了Googl文件系統(FileSystem)所提供的分佈式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫.另一個不同的是HBase基於列的而不是基於行的模式。HBase使用和Bigtable非常相同的數據模型。用戶存儲數據行在一個表裏。一個數據行擁有一個可選擇的鍵和任意數量的列。表是疏鬆的存儲的,因此用戶可以給行定義各種不同的列。HBase主要用於需要隨機訪問,實時讀寫你的大數據(Big Data)。

收錄時間:2011-04-18 11:18:58

Berkeley DB Java Edition

Berkeley DB Java Edition(JE)是一個完全用JAVA寫的,它適合於管理海量的,簡單的數據。能夠高效率的處理1到1百萬條記錄,制約JE數據庫的往往是硬件系而不是JE本身。多線程支持,JE使用超時的方式來處理線程間的死瑣問題。Database都採用簡單的key/value對應的形式。事務支持。允許創建二級庫。這樣我們就可以方便的使用一級key,二級key來訪問我們的數據。支持RAM緩衝,這樣就能減少頻繁的IO操作。支持日誌。數據備份和恢復。遊標支持。

Neo4j

Neo4j是一個嵌入式,基於磁盤的,支持完整事務的Java持久化引擎,它在圖像中而不是表中存儲數據。Neo4j提供了大規模可擴展性,在一臺機器上可以處理數十億節點/關係/屬性的圖像,可以擴展到多臺機器並行運行。相對於關係數據庫來說,圖形數據庫善於處理大量複雜、互連接、低結構化的數據,這些數據變化迅速,需要頻繁的查詢——在關係數據庫中,這些查詢會導致大量的表連接,因此會產生性能上的問題。Neo4j重點解決了擁有大量連接的傳統RDBMS在查詢時出現的性能衰退問題。通過圍繞圖形進行數據建模,Neo4j會以相同的速度遍歷節點與邊,其遍歷速度與構成圖形的數據量沒有任何關係。此外,Neo4j還提供了非常快的圖形算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是無法實現的。

Neo是一個網絡——面向網絡的數據庫——也就是說,它是一個嵌入式的、基於磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡上而不是表中。網絡(從數學角度叫做圖)是一個靈活的數據結構,可以應用更加敏捷和快速的開發模式。

你可以把Neo看作是一個高性能的圖引擎,該引擎具有成熟和健壯的數據庫的所有特性。程序員工作在一個面向對象的、靈活的網絡結構下而不是嚴格、靜態的表中——但是他們可以享受到具備完全的事務特性、企業級的數據庫的所有好處。

由於使用了“面向網絡的數據庫”,人們對Neo充滿了好奇。在該模型中,以“節點空間”來表達領域數據——相對於傳統的模型表、行和列來說,節點空間是很多節點、關係和屬性(鍵值對)構成的網絡。關係是第一級對象,可以由屬性來註解,而屬性則表明了節點交互的上下文。網絡模型完美的匹配了本質上就是繼承關係的問題域,例如語義Web應用。Neo的創建者發現繼承和結構化數據並不適合傳統的關係數據庫模型:

1.對象關係的不匹配使得把面向對象的“圓的對象”擠到面向關係的“方的表”中是那麼的困難和費勁,而這一切是可以避免的。

2.關係模型靜態、剛性、不靈活的本質使得改變schemas以滿足不斷變化的業務需求是非常困難的。由於同樣的原因,當開發小組想應用敏捷軟件開發時,數據庫經常拖後腿。

3.關係模型很不適合表達半結構化的數據——而業界的分析家和研究者都認爲半結構化數據是信息管理中的下一個重頭戲。

4.網絡是一種非常高效的數據存儲結構。人腦是一個巨大的網絡,萬維網也同樣構造成網狀,這些都不是巧合。關係模型可以表達面向網絡的數據,但是在遍歷網絡並抽取信息的能力上關係模型是非常弱的。

雖然Neo是一個比較新的開源項目,但它已經在具有1億多個節點、關係和屬性的產品中得到了應用,並且能滿足企業的健壯性和性能的需求:

完全支持JTA和JTS、2PC分佈式ACID事務、可配置的隔離級別和大規模、可測試的事務恢復。這些不僅僅是口頭上的承諾:Neo已經應用在高請求的24/7環境下超過3年了。它是成熟、健壯的,完全達到了部署的門檻。

NeoDatis ODB

NeoDatis ODB是一個面向對象數據庫,一個真正透明的對象持久層。利用一行簡單的代碼就能夠持久化native object。ODB非常簡單、非常快並自帶強大查詢語言。ODB既可以做爲一個內嵌數據庫引擎使用,也可以以C/S模式運行。

Apache Cassandra

Apache Cassandra是一套開源分佈式Key-Value存儲系統。它最初由Facebook開發,用於儲存特別大的數據。Cassandra不是一個數據庫,它是一個混合型的非關係的數據庫,類似於Google的BigTable。本文主要從以下五個方面來介紹Cassandra:Cassandra的數據模型、安裝和配製Cassandra、常用編程語言使用Cassandra來存儲數據、Cassandra集羣搭建。Cassandra是一個混合型的非關係的數據庫,類似於Google的BigTable。其主要功能比Dynomite(分佈式的Key-Value存儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介於關係數據庫和非關係數據庫之間的開源產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。支持的數據結構非常鬆散,是類似json的bjson格式,因此可以存儲比較複雜的數據類型。)Cassandra最初由Facebook開發,後轉變成了開源項目。它是一個網絡社交雲計算方面理想的數據庫。以Amazon專有的完全分佈式的Dynamo爲基礎,結合了GoogleBigTable基於列族(Column Family)的數據模型。P2P去中心化的存儲。很多方面都可以稱之爲Dynamo 2.0。

Cassandra的數據模型是基於列族(Column Family)的四維或五維模型。它借鑑了Amazon的Dynamo 和Google’s BigTable 的數據結構和功能特點,採用Memtable和SSTable的方式進行存儲。在Cassandra寫入數據之前,需要先記錄日誌( CommitLog),然後數據開始寫入到Column Family對應的 Memtable中,Memtable是一種按照key排序數據的內存結構,在滿足一定條件時,再把Memtable的數據批量的刷新到磁盤上,存儲爲SSTable。

Voldemort

Voldemort是一個分佈式鍵-值(Key-value)存儲系統,是Amazon’s Dynamo的一個開源克隆。

1.支持自動複製數據到多個服務器上。

2.支持數據自動分割所以每個服務器只包含總數據的一個子集。

3.提供服務器故障透明處理功能。

4.支持可撥插的序化支持,以實現複雜的鍵-值存儲,它能夠很好的5.集成常用的序化框架如:Protocol Buffers、Thrift、Avro和Java Serialization。

5.數據項都被標識版本能夠在發生故障時儘量保持數據的完整性而不會影響系統的可用性。

6.每個節點相互獨立,互不影響。

7.支持可插拔的數據放置策略。

Perst

Perst 是一個面向對象的開源嵌入式數據庫軟件,能夠有效的處理移動設備上的大量數據。Perst 是McObject公司發佈的一款非常袖珍的開源嵌入式數據庫,是一個簡單,快速,便捷,面向對象,適合java與.NET的數據庫。Perst不需要專門的編譯器與預處理器,支持ACID事務。對於在資源受限的移動設備(如手機,PDA等)上存儲大量數據和對數據進行頻繁的IO操作往往要消耗很多的設備資源。由於移動設備內存小,性能較差,如果採用關係數據庫(如SQLServer2000, Oracle)管理數據,僅靠其有限的內存資源是不能運行這些數據庫管理系統的,這樣就有必要採用一些特殊的數據庫系統。Perst數據庫正是爲這類設備研究開發的,它們的作用是在資源受限的設備上完成大量數據的訪問操作。其實這些設備系統資源主要消耗在從磁盤上讀取數據的IO操作。如何提供一種有效的文件存儲策略來降低對磁盤的IO操作是嵌入式數據庫軟件設計的主要任務。

像其他嵌入式數據庫一樣,Perst沒有管理上的代價,但不同的是Perst直接將對象以Java或者C#對象的形式進行存儲。因此不需要在對象的內部表現形式和Java/C#表現形式之間轉換。這個數據庫引擎非常精悍,只有約5000行代碼,McObject對此感到驕傲。根據訪問模式不同,運行時需要30K到300K的內存。

Terrastore

Terrastore是一個基於Terracotta(一個業界公認的、快速的分佈式集羣組件)實現的高性能分佈式文檔數據庫。可以動態從運行中的集羣添加/刪除節點,而且不需要停機和修改任何配置。支持通過http協議訪問Terrastore。Terrastore提供了一個基於集合的鍵/值接口來管理JSON文檔並且不需要預先定義JSON文檔的架構。易於操作,安裝一個完整能夠運行的集羣只需幾行命令。

HyperGraphDB

HyperGraphDB是一個通用,可擴展,可移植的,分佈式,可嵌入的開源數據存儲機制。專爲人工智能和語義Web項目而設計。它也可以用來作爲一個適用於各種規模項目的嵌入式面向對象數據庫。HyperGraphDB是一個基於Java的產品,構建在BerkeleyDB存儲類庫之上。它的主要特性包括:

1.支持廣義圖存儲。開放,可擴展的類型系統。

2.基本查詢系統和圖形的遍歷算法。

3.支持Java對象直接存儲。

4.線程安全的事務處理。

5.提供P2P框架實現數據分發。

OrientDB

OrientDB是兼具文擋數據庫的靈活性和圖形數據庫管理鏈接能力的可深層次擴展的文檔-圖形數據庫管理系統。可選無模式、全模式或混合模式下。支持許多高級特性,諸如ACID事務、快速索引,原生和SQL查詢功能。可以JSON格式導入、導出文檔。若不執行昂貴的JOIN操作的話,如同關係數據庫可在幾毫秒內可檢索數以百記的鏈接文檔圖。

HandlerSocket client for java

HandlerSocket是一個MySql插件,可以將mysql作爲NoSQL來使用。通過這個插件,你可以直接跟MySql後端的存儲引擎做key-value式的交互,省去了MySql上層的SQL解釋、打開關閉表、創建查詢計劃等CPU消耗型的開銷。hs4j是HandlerSocket的一個java客戶端。HS4J的使用很簡單,所有的操作都通過HSClient這個接口進行。HS4J同樣支持連接池,可以在構建客戶端的時候傳入連接池大小。

相關文章:http://rdc.taobao.com/team/jm/archives/545

Tair:淘寶的key/value解決方案

Tair是一個分佈式的key/value結構數據的解決方案,系統默認支持基於內存和文件的存儲引擎,對應於通常我們所說的緩存和持久化存儲。

Tair具有良好的架構,使得其在可擴展性、數據安全性方面都有較好的表現:

1.基於對照表的靈活、良好的可擴展性

2.輕量級的configserver

3.抽象的存儲引擎層,支持添加新的存儲引擎

4.自動的複製和遷移,對用戶透明

5.多機架和多數據中心的支持

6.插件容器

Tair除了基本的key/value操作外,還提供了一些實用的功能,使得其適用的場景更多:

1.數據的version支持

2.原子計數器支持

3.item支持

相關文章:http://rdc.taobao.com/blog/cs/?p=302#more-302

LucidDB

LucidDB是唯一一款專注於數據倉庫和商務智能的開源RDBMS,它使用了列存儲架構,支持位圖索引,哈希連接/聚合和頁面級多版本,大部分數據庫最初都注重事務處理能力,而分析功能都是後來才加上去的。相反,LucidDB中的所有組件從一開始就是爲滿足靈活的需求,高性能數據集成和大規模數據查詢而設計的,此外,其架構設計徹底從用戶出發,操作簡單,完全無需DBA。

LucidDB對硬件要求也極低,即使不搭建集羣環境,在單一的Linux或Windows服務器上也能獲得極好的性能。最新版本還加入了對Mac OS X和Windows 64位的支持,官方網站上的文檔和教程也非常豐富,非常值得你體驗一下。

Couchdb4j

Couchdb4j是一個Java開源類庫用於與基於JSON的CouchDB數據庫交互。

原文出自:open-open.com

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