NoSql數據庫

隨着互聯網web2.0網站的興起,非關係型的數據庫現在成了一個極其熱門的新領域,非關係數據庫產品的發展非常迅速。而傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,如:對數據庫高併發讀寫的需求、對海量數據的高效率存儲和訪問的需求、對數據庫的高可擴展性和高可用性的需求等等,下面我就跟大家幾種常見的nosql數據庫。

1、MongoDB

介紹

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

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

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

所謂“面向集合”(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。

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

特性

它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:

面向集合存儲,易存儲對象類型的數據。

模式自由。

支持動態查詢。

支持完全索引,包含內部對象。

支持查詢。

支持複製和故障恢復。

使用高效的二進制數據存儲,包括大型對象(如視頻等)。

自動處理碎片,以支持雲計算層次的擴展性。

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

文件存儲格式爲BSON(一種JSON的擴展)。

可通過網絡訪問。

官方網站

http://www.mongodb.org/

2、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的優勢項目。

官方網站

http://couchdb.apache.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作爲對應。

HBase訪問接口

Native Java API,最常規和高效的訪問方式,適合Hadoop MapReduce Job並行批處理HBase表數據

HBase Shell,HBase的命令行工具,最簡單的接口,適合HBase管理使用

Thrift Gateway,利用Thrift序列化技術,支持C++,PHP,Python等多種語言,適合其他異構系統在線訪問HBase表數據

REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制

Pig,可以使用Pig Latin流式編程語言來操作HBase中的數據,和Hive類似,本質最終也是編譯成MapReduce Job來處理HBase表數據,適合做數據統計

Hive,當前Hive的Release版本尚沒有加入對HBase的支持,但在下一個版本Hive 0.7.0中將會支持HBase,可以使用類似SQL語言來訪問HBase

特徵

主要功能特性有:

支持數十億行X上百萬列

採用分佈式架構 Map/reduce

對實時查詢進行優化

高性能 Thrift網關

通過在server端掃描及過濾實現對查詢操作預判

支持 XML, Protobuf, 和binary的HTTP

基於 Jruby( JIRB)的shell

對配置改變和較小的升級都會重新回滾

不會出現單點故障

堪比MySQL的隨機訪問性能

官方網站

http://hbase.apache.org/

4、cassandra

介紹

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

特性

和其他數據庫比較,有幾個突出特點:

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

真正的可擴展性 :Cassandra是純粹意義上的水平擴展。爲給集羣添加更多容量,可以指向另一臺電腦。你不必重啓任何進程,改變應用查詢,或手動遷移任何數據。

多數據中心識別 :你可以調整你的節點佈局來避免某一個數據中心起火,一個備用的數據中心將至少有每條記錄的完全複製。

一些使Cassandra提高競爭力的其他功能:

範圍查詢 :如果你不喜歡全部的鍵值查詢,則可以設置鍵的範圍來查詢。

列表數據結構 :在混合模式可以將超級列添加到5維。對於每個用戶的索引,這是非常方便的。

分佈式寫操作 :有可以在任何地方任何時間集中讀或寫任何數據。並且不會有任何單點失敗。

官方網站

http://cassandra.apache.org/

5、Hypertable

介紹

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

特性

主要功能特點:

負載均衡的處理

版本控制和一致性

可靠性

分佈爲多個節點

官方網站

http://hypertable.org/

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