nosql數據庫有哪些?17個好的nosql數據庫推薦

nosql數據庫有哪些?17個好的nosql數據庫推薦

2014/7/11 15:01:53來源:www.o4corporation.com作者:tansu我要評論(0)

NoSQL 是非關系型數據存儲的廣義定義。它打破了長久以來關系型數據庫與ACID理論大一統的局面。NoSQL 數據存儲不需要固定的表結構,通常也不存在連接操作。在大數據存取上具備關系型數據庫無法比擬的性能優勢。隨著互聯網web2.0網站的興起,NoSQL數據庫現在成了一個極其熱門的新領域,NoSQL產品的發展非常迅速.目前Google的 BigTable 和Amazon 的Dynamo使用的就是NoSQL型數據庫。那么nosql的數據庫有哪些呢?小編整理了一下,分享給大家。

1.Hypertable

Hypertable是一個開源、高性能、可伸縮的數據庫,它采用與Google的Bigtable相似的模型。在過去數年中,Google為在 PC集群 上運行的可伸縮計算基礎設施設計建造了三個關鍵部分。第一個關鍵的基礎設施是Google File System(GFS),這是一個高可用的文件系統,提供了一個全局的命名空間。它通過跨機器(和跨機架)的文件數據復制來達到高可用性,并因此免受傳統 文件存儲系統無法避免的許多失敗的影響,比如電源、內存和網絡端口等失敗。第二個基礎設施是名為Map-Reduce的計算框架,它與GFS緊密協作,幫 助處理收集到的海量數據。第三個基礎設施是Bigtable,它是傳統數據庫的替代。Bigtable讓你可以通過一些主鍵來組織海量數據,并實現高效的 查詢。Hypertable是Bigtable的一個開源實現,并且根據我們的想法進行了一些改進。

主要功能特點:負載均衡的處理版本控制和一致性可靠性分布為多個節點 

官方下載:http://hypertable.org/

2.MongoDB

MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫。主要解決的是海量數據的訪問效率問題,為WEB應用提供可擴展的高性能數據存儲解決方案。當數據量達到50GB以上的時候,MongoDB的數據庫訪問速度是MySQL的10倍以上。MongoDB的并發讀寫效率不是特別出色,根據官方提供的性能測試表明,大約每秒可以處理0.5萬~1.5萬次讀寫請求。MongoDB還自帶了一個出色的分布式文件系統GridFS,可以支持海量的數據存儲。

MongoDB也有一個Ruby的項目MongoMapper,是模仿Merb的DataMapper編寫的MongoDB接口,使用起來非常簡單,幾乎和DataMapper一模一樣,功能非常強大。

MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口為27017。推薦運行在64位平臺,因為MongoDB在32位模式運行時支持的最大文件尺寸為2GB。

MongoDB把數據存儲在文件中(默認路徑為:/data/db),為提高效率使用內存映射文件進行管理。

官網下載是:http://www.mongodb.org/

3.Hbase

HBase是一個分布式的、面向列的開源數據庫,該技術來源于Chang et al所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫.另一個不同的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。   HBase是Google Bigtable的開源實現,類似Google Bigtable利用GFS作為其文件存儲系統,HBase利用Hadoop HDFS作為其文件存儲系統;Google運行MapReduce來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable利用 Chubby作為協同服務,HBase利用Zookeeper作為對應。

主要功能特性有:支持數十億行X上百萬列,采用分布式架構 Map/reduce;對實時查詢進行優化;高性能 Thrift網關;通過在server端掃描及過濾實現對查詢操作預判;支持 XML, Protobuf, 和binary的HTTP;基于 Jruby( JIRB)的shell;對配置改變和較小的升級都會重新回滾;不會出現單點故障;堪比MySQL的隨機訪問性能。

官方下載:http://hbase.apache.org/

4.memcachedb

MemcacheDB是一個分布式、key-value形式的持久存儲系統。它不是一個緩存組件,而是一個基于對象存取的、可靠的、快速的持久存儲引擎。 協議跟memcache一致(不完整),所以很多memcached客戶端都可以跟它連接。MemcacheDB采用Berkeley DB作為持久存儲組件,故很多Berkeley DB的特性的他都支持。MemcacheDB的前端緩存是Memcached   前端:memcached的網絡層   后端:BerkeleyDB存儲

寫速度:從本地服務器通過memcache客戶端(libmemcache)set2億條16字節長的key,10字節長的Value的記錄,耗時 16572秒,平均速度12000條記錄/秒。

讀速度:從本地服務器通過memcache客戶端(libmemcache)get100萬條16字節長的key,10字節長的Value的記錄,耗 時103秒,平均速度10000條記錄/秒。支持的memcache命令

官方下載:http://memcachedb.org/

Riak

Riak是由技術公司basho開發的一個類似Dynamo的分布式Key-Value系統。其以分布式,水平擴展性,高容錯性等特點著稱。從事Riak工作最有趣的部分是可以使用JavaScript或者Erlang來做Map/Reduce查詢,它們會查詢每個節點,收集結果,而且可以重復,如果需要使用的結果進行重新進行搜尋的話。該系統還為類似于Solr的搜索提供全文索引,同時還提供一個控制面板,可以查看集群的信息。

5.Redis

redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。

性能測試結果:

SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,服務器配置如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 網站使用 Redis 做為緩存服務器。

特點

主要功能特點:安全性;主從復制;運行異常快;支持 sets(同時也支持 union/diff/inter);支持列表(同時也支持隊列;阻塞式 pop操作);支持哈希表(帶有多個域的對象);支持排序 sets(高得分表,適用于范圍查詢);Redis支持事務;支持將數據設置成過期數據(類似快速緩沖區設計);Pub/Sub允許用戶實現消息機制

官方下載:http://redis.io/

6.Tokyo Cabinet/Tokyo Tyant

Tokyo Cabinet(TC)和Tokyo Tyrant(TT)的開發者是日本人Mikio Hirabayashi,主要用于日本最大的SNS網站mixi.jp。TC出現的時間最早,現在已經是一個非常成熟的項目,也是Key-Value數據庫領域最大的熱點,現在廣泛應用于網站。TC是一個高性能的存儲引擎,而TT提供了多線程高并發服務器,性能也非常出色,每秒可以處理4萬~5萬次讀寫操作。

TC除了支持Key-Value存儲之外,還支持Hashtable數據類型,因此很像一個簡單的數據庫表,并且還支持基于Column的條件查詢、分頁查詢和排序功能,基本上相當于支持單表的基礎查詢功能,所以可以簡單地替代關系數據庫的很多操作,這也是TC受到大家歡迎的主要原因之一。有一個Ruby項目miyazakiresistance將TT的Hashtable的操作封裝成和ActiveRecord一樣的操作,用起來非常高效。

特性

TC/TT在Mixi的實際應用當中,存儲了2000萬條以上的數據,同時支撐了上萬個并發連接,是一個久經考驗的項目。TC在保證了極高的并發讀寫性能的同時,還具有可靠的數據持久化機制,同時還支持類似關系數據庫表結構的Hashtable以及簡單的條件、分頁和排序操作,是一個很優越的NoSQL數據庫。

TC的主要缺點是,在數據量達到上億級別以后,并發寫數據性能會大幅度下降,開發人員發現在TC里面插入1.6億條2KB~20KB數據的時候,寫入性能開始急劇下降。即當數據量達到上億條的時候,TC性能便開始大幅度下降,從TC作者自己提供的Mixi數據來看,至少上千萬條數據量的時候還沒有遇到這么明顯的寫入性能瓶頸

官方下載:http://fallabs.com/tokyocabinet/

7.db4o

db4o 是一個開源的純面向對象數據庫引擎,對于 Java 與 .NET 開發者來說都是一個簡單易用的對象持久化工具,使用簡單。同時,db4o 已經被第三方驗證為具有優秀性能的面向對象數據庫, db4o 和一些傳統的持久方案進行了比較。db4o 在這次比較中排名第二,僅僅落后于JDBC。同時,db4o 的一個特點就是無需 DBA 的管理,占用資源很小,這很適合嵌入式應用以及 Cache 應用, 所以自從 db4o 發布以來,迅速吸引了大批用戶將 db4o 用于各種各樣的嵌入式系統,包括流動軟件、醫療設備和實時控制系統。

db4o 由來自加州硅谷的開源數據庫公司 db4objects 開發并負責商業運營和支持。db4o 是基于 GPL 協議。db4objects 于 2004 年在 CEO Christof Wittig 的領導下組成,資金背景包括 Mark Leslie 、 Veritas 軟件公司 CEO 、 Vinod Khosla ( Sun 公司創始人之一)、 Sun 公司 CEO 在內的硅谷高層投資人組成。毫無疑問,今天 db4objects 公司是硅谷炙手可熱的技術創新者之一。

db4o 的目標是提供一個功能強大的,適合嵌入的數據庫引擎,可以工作在設備,移動產品,桌面以及服務器等各種平臺。主要特性如下:

開源模式。與其他 ODBMS 不同,db4o 為開源軟件,通過開源社區的力量驅動開發 db4o 產品。

原生數據庫。db4o 是 100% 原生的面向對象數據庫,直接使用編程語言來操作數據庫。程序員無需進行 OR 映射來存儲對象,大大節省了程序員在存儲數據的開發時間。

高性能。 db4o 官方公布的基準測試數據,db4o 比采用 Hibernate/MySQL 方案在某些測試線路上速度高出 44 倍之多!并且安裝簡單,僅僅需要 400Kb 左右的 .jar 或 .dll 庫文件。在接下來的系列文章中,我們將只關注在 Java 平臺的應用,但是實際上 db4o 毫無疑問會很好地在 .NET平臺

易嵌入。使用 db4o 僅需引入 400 多 k 的 jar 文件或是 dll 文件,內存消耗極小。

零管理。使用 db4o 無需 DBA,實現零管理。

支持多種平臺。db4o 支持從 Java 1.1 到 Java 5.0,此外還支持 .NET 、 CompactFramework 、 Mono 等 .NET 平臺,也可以運行在 CDC 、 PersonalProfile 、 Symbian 、 Savaje 以及 Zaurus 這種支持反射的 J2ME 方言環境中,還可以運行在 CLDC 、 MIDP 、 RIM/Blackberry 、 Palm OS 這種不支持反射的 J2ME 環境中。

官方下載:http://www.db4o.com/china/

8.Versant

Versant Object Database (V/OD) 提供強大的數據管理,面向 C++, Java or .NET 的對象模型,支持大并發和大規模數據集合。

Versant對象數據庫是一個對象數據庫管理系統(ODBMS:Object Database Management System)。它主要被用在復雜的、分布式的和異構的環境中,用來減少開發量和提高性能。尤其當程序是使用Java和(或)C++語言編寫的時候,尤其有用。

它是一個完整的,電子基礎設施軟件,簡化了事務的構建和部署的分布式應用程序。

作為一個卓越的數據庫產品,Versant ODBMS在設計時的目標就是為了滿足客戶在異類處理平臺和企業級信息系統中對于高性能、可量測性、可靠性和兼容性方面的需求。

Versant對象數據庫已經在為企業業務應用提供可靠性、完整性和高性能方面獲得了建樹,Versant ODBMS所表現出的高效的多線程架構、internal parallelism 、平穩的Client-Server結構和高效的查詢優化,都體現了其非常卓越的性能和可擴展性。

Versant對象數據庫包括Versant ODBMS,C++和Java語言接口,XML工具包和異步復制框架。

Versant Object Database8.0,適用于應用環境中包含復雜對象模型的數據庫,其設計目標是能夠處理這些應用經常需要的導航式訪問,無縫的數據分發,和企業級的規模。

主要特征:C++、Java及.NET 的透明對象持久;支持對象持久標準,如JDO;跨多數據庫的無縫數據分發;企業級的高可用性選項;動態模式更新;管理工作量少(或不需要);端到端的對象支持架構;細粒度并發控制;多線程,多會話;支持國際字符集;高速數據采集。

官方下載:http://www.versant.com/index.aspx

9.CouchDB

Apache CouchDB 是一個面向文檔的數據庫管理系統。它提供以 JSON 作為數據格式的 REST 接口來對其進行操作,并可以通過視圖來操縱文檔的組織和呈現。 CouchDB 是 Apache 基金會的頂級開源項目。

CouchDB是用Erlang開發的面向文檔的數據庫系統,其數據存儲方式類似Lucene的Index文件格式。CouchDB最大的意義在于它是一個面向Web應用的新一代存儲系統,事實上,CouchDB的口號就是:下一代的Web應用存儲系統。

主要功能特性有:

CouchDB是分布式的數據庫,他可以把存儲系統分布到n臺物理的節點上面,并且很好的協調和同步節點之間的數據讀寫一致性。這當然也得以于Erlang無與倫比的并發特性才能做到。對于基于web的大規模應用文檔應用,然的分布式可以讓它不必像傳統的關系數據庫那樣分庫拆表,在應用代碼層進行大量的改動。

CouchDB是面向文檔的數據庫,存儲半結構化的數據,比較類似lucene的index結構,特別適合存儲文檔,因此很適合CMS,電話本,地址本等應用,在這些應用場合,文檔數據庫要比關系數據庫更加方便,性能更好。

CouchDB支持REST API,可以讓用戶使用JavaScript來操作CouchDB數據庫,也可以用JavaScript編寫查詢語句,我們可以想像一下,用AJAX技術結合CouchDB開發出來的CMS系統會是多么的簡單和方便。其實CouchDB只是Erlang應用的冰山一角,在最近幾年,基于Erlang的應用也得到的蓬勃的發展,特別是在基于web的大規模,分布式應用領域,幾乎都是Erlang的優勢項目。

10.DynamoDB

DynamoDB是亞馬遜的key-value模式的存儲平臺,可用性和擴展性都很好,性能也不錯:讀寫訪問中99.9%的響應時間都在300ms內。DynamoDB的NoSQL解決方案,也是使用鍵/值對存儲的模式,平且通過服務器把所有的數據存儲在SSD上的三個不同的區域。如果有更高的傳輸需求,DynamoDB也可以在后臺添加更多的服務器。

11.Cassandra

Cassandra是一個混合型的非關系的數據庫,類似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介于關系數據庫和非關系數據庫之間的開源產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。)Cassandra最初由Facebook開發,后轉變成了開源項目。它是一個網絡社交云計算方面理想的數據庫。以Amazon專有的完全分布式的Dynamo為基礎,結合了Google BigTable基于列族(Column Family)的數據模型。P2P去中心化的存儲。很多方面都可以稱之為Dynamo 2.0。

官方下載:http://cassandra.apache.org/

12.Flare

TC是日本第一大SNS網站mixi.jp開發的,而Flare是日本第二大SNS網站green.jp開發的。簡單地說,Flare就是給TC添加了scale(可擴展)功能。它替換了TT部分,自己另外給TC寫了網絡服務器。Flare的主要特點就是支持scale能力,它在網絡服務端之前添加了一個Node Server,用來管理后端的多個服務器節點,因此可以動態添加數據庫服務節點、刪除服務器節點,也支持Failover。如果你的使用場景必須讓TC可以scale,那么可以考慮Flare。

flare唯一的缺點就是他只支持memcached協議,因此當你使用flare的時候,就不能使用TC的table數據結構了,只能使用TC的key-value數據結構存儲。

官方下載:http://flare.prefuse.org/

13.Berkeley DB

Berkeley DB (DB)是一個高性能的,嵌入數據庫編程庫,和C語言,C++,Java,Perl,Python,PHP,Tcl以及其他很多語言都有綁定。Berkeley DB可以保存任意類型的鍵/值對,而且可以為一個鍵保存多個數據。Berkeley DB可以支持數千的并發線程同時操作數據庫,支持最大256TB的數據,廣泛 用于各種操作系統包括大多數Unix類操作系統和Windows操作系統以及實時操作系統。

Berkeley DB最初開發的目的是以新的HASH訪問算法來代替舊的hsearch函數和大量的dbm實現(如AT&T的dbm,Berkeley的 ndbm,GNU項目的gdbm),Berkeley DB的第一個發行版在1991年出現,當時還包含了B+樹數據訪問算法。在1992年,BSD UNIX第4.4發行版中包含了Berkeley DB1.85版。基本上認為這是Berkeley DB的第一個正式版。在1996年中期,Sleepycat軟件公司成立,提供對Berkeley DB的商業支持。在這以后,Berkeley DB得到了廣泛的應用,成為一款獨樹一幟的嵌入式數據庫系統。2006年Sleepycat公司被Oracle 公司收購,Berkeley DB成為Oracle數據庫家族的一員,Sleepycat原有開發者繼續在Oracle開發Berkeley DB,Oracle繼續原來的授權方式并且加大了對Berkeley DB的開發力度,繼續提升了Berkeley DB在軟件行業的聲譽。Berkeley DB的當前最新發行版本是4.7.25。

官方下載:http://www.oracle.com/us/products/database/overview/index.html?origref=http://www.oschina.net/p/berkeley+db

14.Memlink

Memlink 是天涯社區開發的一個高性能、持久化、分布式的Key-list/queue數據引擎。正如名稱中的memlink所示,所有數據都建構在內存中,保證了 系統的高性能 (大約是redis幾倍),同時使用了redo-log技術保證數據的持久化。Memlink還支持主從復制、讀寫分離、List過濾操作等功能。

與Memcached不同的是,它的value是一個list/queue。并且提供了諸如持久化,分布式的功能。聽起來有點像Redis,但它號稱比Redis更好,在很多Redis做得還不好的地方進行了改進和完善。提供的客戶端開發包包括 c,python,php,java 四種語言。

它的特點是:內存數據引擎,性能極為高效;List塊鏈結構,精簡內存,優化查找效率;Node數據項可定義,支持多種過濾操作;支持redo-log,數據持久化,非Cache模式;分布式,主從同步。

官方下載:http://code.google.com/p/memlink/

15.BaseX

BaseX 是一個XML數據庫,用來存儲緊縮的XML數據,提供了高效的 XPath 和 XQuery 的實現,還包括一個前端操作界面。

BaseX一個比較顯著地優點是有了GUI,界面中有查詢窗口,可采用XQuery查詢相關數據庫中的xml文件;也有能夠動態展示xml文件層次和節點關系的圖。但我感覺也就這點好處了,編程時和GUI無關了。

和Xindice相比,BaseX更能支持大型XML文檔的存儲,而Xindice對大型xml沒有很好的支持,為管理中小型文檔的集合而設計。

BaseX 是一個XML數據庫,用來存儲緊縮的XML數據,提供了高效的 XPath 和 XQuery 的實現,還包括一個前端操作界面。

官方下載:http://basex.org/

16.Neo4j

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

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

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

Neo是一個比較新的開源項目,但它已經在具有1億多個節點、關系和屬性的產品中得到了應用,并且能滿足企業的健壯性和性能的需求。完全支持JTA和JTS、2PC分布式ACID事務、可配置的隔離級別和大規模、可測試的事務恢復。這些不僅僅是口頭上的承諾:Neo已經應用在高請求的24/7環境下超過3年了。它是成熟、健壯的,完全達到了部署的門檻。

Neo4j是一個用Java實現、完全兼容ACID的圖形數據庫。數據以一種針對圖形網絡進行過優化的格式保存在磁盤上。Neo4j的內核是一種極快的圖形引擎,具有數據庫產品期望的所有特性,如恢復、兩階段提交、符合XA等。

官方下載:http://neo4j.org/

17.Oracle的NoSQL

Oracle作為全球最大的關系型數據庫提供商,在其產品鏈條中,也加入了NoSQL數據庫這一環,而且這個新的數據庫名字很霸氣,就叫NoSQL Database。

Oracle的這個NoSQL Database,是在10月4號的甲骨文全球大全上發布的Big Data Appliance的其中一個組件,Big Data Appliance是一個集成了Hadoop、NoSQL Database、Oracle數據庫Hadoop適配器、Oracle數據庫Hadoop裝載器及R語言的系統。

它的特征是:數據模型簡單;擴展性強行為可預測性;高可用性;簡單的管理與維護。

以上就是小編給大家整理的NoSQL數據庫。

閱讀本文后您有什么感想? 已有 人給出評價!

  • 0 囧
      囧
  • 0 惡心
      惡心
  • 0 期待
      期待
  • 0
      難過
  • 0 不錯
      不錯
  • 0 關注
      關注
  • 最新評論
  • 熱門評論
共有評論(0)條 查看全部評論
高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親

注:您的評論需要經過審核才會顯示出來

深夜影院-梨花影院-亚洲AV有码在线天堂