天天看點

開源的NoSQL資料庫主要軟體介紹

【非關系資料庫】

開源的NoSQL資料庫主要軟體介紹

目前,NoSQL資料庫變得越來越流行,NoSQL資料庫具有很好的可伸縮性與靈活性,非常适合于大資料存儲與處理。相較于傳統的關系型資料庫,NoSQL資料庫在性能上具有很大的優勢。其中MongoDB是這些開源NoSQL資料庫中最好的。常用的NoSQL資料庫有以下幾種:

**1. MongoDB**

MongoDB是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。支援的資料結構非常松散,是類似json的bjson格式,是以可以存儲比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。它的特點是高性能、易部署、易使用,存儲資料。

開源的NoSQL資料庫主要軟體介紹

主要功能特性有:

*面向集合存儲,易存儲對象類型的資料。

*模式自由。

*支援動态查詢。

*支援完全索引,包含内部對象。

*支援查詢。

*支援複制和故障恢複。

*使用高效的二進制資料存儲,包括大型對象(如視訊等)。

*自動處理碎片,以支援雲計算層次的擴充性

*支援RUBY,PYTHON,JAVA,C,C#,C++,PHP等多種語言。

*檔案存儲格式為BSON(一種JSON的擴充)

*可通過網絡通路

所謂“面向集合”(Collenction-Orented),意思是資料被分組存儲在資料集中,被稱為一個集合(Collenction)。每個 集合在資料庫中都有一個唯一的辨別名,并且可以包含無限數目的文檔。集合的概念類似關系型資料庫(RDBMS)裡的表(table),不同的是它不需要定義任何模式(schema)。

模式自由(schema-free),意味着對于存儲在mongodb資料庫中的檔案,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的檔案存儲在同一個資料庫裡。

存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一辨別一個文檔,為字元串類型,而值則可以是各中複雜的檔案類型。我們稱這種存儲形式為BSON(Binary Serialized dOcument Format)。

MongoDB服務端可運作在Linux、Windows或OS X平台,支援32位和64位應用,預設端口為27017。推薦運作在64位平台,因為MongoDB在32位模式運作時支援的最大檔案尺寸為2GB。

2. Cassandra

Cassandra是一套開源分布式NoSQL資料庫系統。它最初由Facebook開發,用于儲存收件箱等簡單格式資料,集GoogleBigTable的資料模型與Amazon Dynamo的完全分布式的架構于一身。Facebook于2008将 Cassandra 開源。

開源的NoSQL資料庫主要軟體介紹

主要特性:

*分布式

*基于column的結構化

*高伸展性

Cassandra的主要特點就是它不是一個資料庫,而是由一堆資料庫節點共同構成的一個分布式網絡服務,對Cassandra 的一個寫操作,會被複制到其他節點上去,對Cassandra的讀操作,也會被路由到某個節點上面去讀取。對于一個Cassandra群集來說,擴充性能 是比較簡單的事情,隻管在群集裡面添加節點即可。

支援度雖不如文檔存儲MongoDB,但和其他資料庫比較,有幾個突出特點:

模式靈活 :使用Cassandra,像文檔存儲,你不必提前解決記錄中的字段。你可以在系統運作時随意的添加或移除字段。這是一個驚人的效率提升,特别是在大型部署上。

真正的可擴充性 :Cassandra是純粹意義上的水準擴充。為給叢集添加更多容量,可以指向另一台電腦。不必重新開機任何程序,改變應用查詢,或手動遷移任何資料。

多資料中心識别 :你可以調整你的節點布局來避免某一個資料中心起火,一個備用的資料中心将至少有每條記錄的完全複制。

*3. CouchDB*

開源的NoSQL資料庫主要軟體介紹

這也是Apache軟體基金會的一個項目,CouchDB是另一個面向文檔的資料庫,以JSON格式存儲資料。它相容于ACID,像MongoDB一樣,CouchDB也可以用于存儲網站的資料與内容,以及提供緩存等。可以通過JavaScript在CouchDB上運作MapReduce查詢。此外,CouchDB還提供了一個非常友善的基于Web的管理控制台。它非常适合于Web應用。

與現在流行的關系資料庫伺服器不同,CouchDB 是圍繞一系列語義上自包含的文檔而組織的。 CouchDB 中的文檔是沒有模式的(schema free),也就是說并不要求文檔具有某種特定的結構。 CouchDB 的這種特性使得相對于傳統的關系資料庫而言,有自己的适用範圍。一般來說,圍繞文檔來建構的應用都比較适合使用 CouchDB 作為其背景存儲。

CouchDB 強調其中所存儲的文檔,在語義上是自包含的。這種面向文檔的設計思路,更貼近很多應用的問題域的真實情況。對于這類應用,使用 CouchDB 的文檔來進行模組化,會更加自然和簡單。與此同時,CouchDB 也提供基于 MapReduce 程式設計模型的視圖來對文檔進行查詢,可以提供類似于關系資料庫中 SQL 語句的能力。

**4. Hypertable**

開源的NoSQL資料庫主要軟體介紹

Hypertable模仿的是Google的BigTable資料庫系統。Hypertable的建立者将“成為高可用、PB規模的資料庫開源标準”作為Hypertable的目标。換言之,Hypertable的設計目标是跨越多個廉價的伺服器可靠地存儲大量資料。Hypertable 是一個正在進行中的開源項目,以google的bigtable論文為基礎指導,使用c++語言實作。

目标:是為了解決大并發,大資料量的資料庫需求。目前隻支援最基本的查詢功能

缺點: ①不支援事物, 不支援關聯查詢.

②對單條查詢的響應時間可能也不如傳統資料庫(資料量越大,對hypertable越有利)。

優點: ①并發性: 可以處理大量并發請求,和管理大量資料。

②規模:可擴縮性好,擴容隻需要增加叢集中的機器就ok了。

③可用性: 任何節點失效,既不會造成系統癱瘓也不會丢失數 據。在叢集節點足夠的情況下,并發量和資料量對性能基本沒有影響。

**5. Redis**

開源的NoSQL資料庫主要軟體介紹

這是個開源、進階的鍵值存儲。由于在鍵中使用了hash、set、string、sorted set及list,是以Redis也稱作資料結構伺服器。redis 是一個高性能的key-value資料庫。 redis的出現,很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關系資料庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP用戶端,使用很友善。

Redis是一種進階key-value資料庫。它跟memcached類似,不過資料可以持久化,而且支援的資料類型很豐富。有字元串,連結清單,集 合和有序集合。支援在伺服器端計算集合的并,交和補集(difference)等,還支援多種排序功能。是以Redis也可以被看成是一個資料結構服務 器。Redis的所有資料都是儲存在記憶體中,然後不定期的通過異步方式儲存到磁盤上(這稱為“半持久化模式”);也可以把每一次資料變化都寫入到一個append only file(aof)裡面(這稱為“全持久化模式”)。

6. Riak

開源的NoSQL資料庫主要軟體介紹

Riak 是一個去中心化的 key-value 存儲伺服器,提供一個靈活的 map/reduce 引擎,一個友好的 HTTP/JSON 查詢接口。

7. Neo4j

Neo4j是一個用Java實作、完全相容ACID的圖形資料庫。Neo4j既可作為無需任何管理開銷的内嵌資料庫使用;也可以作為單獨的伺服器使用,在這種使用場景下,它提供了廣泛使用的REST接口,能夠友善地內建到基于PHP、.NET和JavaScript的環境裡。

Neo4j的典型資料特征:

• 資料結構不是必須的,甚至可以完全沒有,這可以簡化模式變更和延遲資料遷移。

• 可以友善模組化常見的複雜領域資料集,如CMS裡的通路控制可被模組化成細粒度的通路控制表,類對象資料庫的用例、TripleStores以及其他例子。

• 典型使用的領域如語義網和RDF、LinkedData、GIS、基因分析、社交網絡資料模組化、深度推薦算法以及其他領域。

8. Hadoop HBase

開源的NoSQL資料庫主要軟體介紹

HBase是一款可伸縮、分布式的大資料存儲。它可以用在資料的實時與随機通路的場景下。HBase擁有子產品化與線性的可伸縮性,并且能夠保證讀寫的嚴格一緻性。HBase提供了一個Java API,可以實作輕松的用戶端通路;提供了可配置且自動化的表分區功能;還有Bloom過濾器以及block緩存等特性。

HBase 是Hadoop的一個子項目,HBase采用了Google BigTable的稀疏的,面向列的資料庫實作方式的理論,建立在hadoop的hdfs上,一方面裡用了hdfs的高可靠性和可伸縮行,另外一方面裡用了BigTable的高效資料組織形式.可以說HBase為海量資料的real-time相應提供了很好的一個開源解決方案.

*9. Couchbase*

Couchbase是CouchDB的派生,不過它已經成為了一款功能完善的資料庫産品。它向文檔資料庫轉移的趨勢會讓MongoDB感到壓力。每個節點上它都是多線程的,這是個非常主要的可伸縮性優勢,特别是當托管在自定義或是Bare-Metal硬體上時更是如此。

Couchbase Server 是一個叢集化的、基于文檔的資料庫系統,它使用一個緩存層來提供非常快的資料通路,将大部分資料都存儲在 RAM 中。該系統使用多個節點和一個自動分散在整個叢集上的緩存層。這實作了一種彈性,您可擴大和緊縮叢集,以便利用更多 RAM 或磁盤 I/O 來幫助提升性能。

Couchbase Server 中的所有資料最終會持久存儲在磁盤中,但最初會通過緩存層執行寫入和更新操作,這正是提供高性能的源泉,是我們通過處理 Hadoop 資料來獲得實時資訊和查詢内容時可利用的優勢。

Couchbase Server 的基本形式是一個基本文檔和基于鍵/值的存儲。隻有在知道文檔 ID 時,才能檢索叢集提供的資訊。在 Couchbase Server 2.0 中,可以将文檔存儲為 JSON 格式,然後使用視圖系統在存儲的 JSON 文檔上建立一個視圖。視圖是在存儲在資料庫中的文檔上執行的一個 MapReduce 組合。來自視圖的輸出是一個索引,它通過 MapReduce 函數來比對您定義的結構。索引的存在提供了查詢底層的文檔資料的能力。

10. MemcacheDB

memcachedb是 一個由新浪網的開發人員開放出來的開源項目,給memcached分布式緩存伺服器添加了Berkeley DB的持久化存儲機制和異步主輔複制機制,讓memcached具備了事務恢複能力、持久化能力和分布式複制能力,非常适合于需要超高性能讀寫速度,但是 不需要嚴格事務限制,能夠被持久化儲存的應用場景,例如memcachedb被應用在新浪部落格上面。

*11. REVENDB*

RavenDB是一個在.NET下的文檔型資料庫,它具有高擴充性,支援MapReduce,提供RESTful的接口。同時它又支援ACID的事務。.

12. Voldemort

開源的NoSQL資料庫主要軟體介紹

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

1.支援自動複制資料到多個伺服器上。

2.支援資料自動分割是以每個伺服器隻包含總資料的一個子集。

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

4.支援可撥插的序化支援,以實作複雜的鍵-值存儲,它能夠很好的5.內建常用的序化架構如:Protocol Buffers、Thrift、Avro和Java Serialization。

6.資料項都被辨別版本能夠在發生故障時盡量保持資料的完整性而不會影響系統的可用性。

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

8.支援可插拔的資料放置政策。