poptest是國內惟一一家培養測試開發工程師的培訓機構,以學員能勝任自動化測試,性能測試,測試工具開發等工做爲目標。若是對課程感興趣,請你們諮詢qq:908821478,諮詢電話010-84505200。html
一、NOSQL數據庫:node
列族存儲:HBase,Hypertable數據庫
文檔存儲:MongDB,CouchDBjson
鍵值存儲:Redis,Memcahed,Berkeley DB網絡
最終一致的鍵值存儲:Cassandra,Voldermot數據結構
它們各有特點,適用於不一樣的應用場景。
Redis是一個高性能的key-value數據庫。它的出現很大程度補償了memcached這類keyvalue存儲的不足,在部分場合能夠對關係數據庫起到很好的補充做用,比較適合做爲內存數據庫。但它的查詢功能比較單一,沒法實現RDBMS豐富的查詢功能,而HBase通過改進後能夠實現。
MongoDB是用C++編寫的分佈式文件存儲數據庫。它是一個介於RDBMS和NoSQL之間的產品,是NoSQL當中功能最豐富,最像RDBMS的。MongoDB支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。它支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。所以,用戶能夠方便地由MySQL遷移到MongoDB,進一步促進MongoDB的流行。
相比之下,HBase支持的查詢語言沒有MongoDB豐富,也不支持二級索引, 在易用性方面完敗於MongoDB。但HBase是在Hadoop基礎上開發的,與Hadoop結合更緊密,數據存儲在riDFS巾,對MapReduce框架的支持更好。並且HBase的吞吐率遠大於MongoDB,大數據寫入性能也遙遙領先。在具體應用上,
MongoDB更適合於數據變化較快的場景,適用動態的查詢,使用索引而不須要MapReduce;而HBase更適合海量數據的實時隨機讀取。架構
不過經過一些方法,好比Solr+Hbase,ITHbase,協處理器等方式,爲HBase增長二級索引的話,可讓HBase在功能上不輸於MongDB。併發
二、分佈式文件系統:負載均衡
HDFS,GFS等:適合存儲大文件。(HDFS對大文件作了優化,關注吞吐量,適合作批處理)框架
MogileFS,FastDFS,OpenStack的Swift等。適合存儲小文件
淘寶的TFS。
註解1 -- 下面是轉載來的HDFS和Swift的對比:
最近在Quora上有人提到一個問題,有關Hadoop分佈式文件系統和OpenStack對象存儲的不一樣。問題原文以下:
「Hadoop分佈式文件系統(HDFS)和OpenStack對象存儲(OpenStack Object Storage)彷佛都有着類似的目的:實現冗餘、快速、聯網的存儲。什麼樣的技術特性讓這兩種系統於是不同?這兩種存儲系統最終趨於融合是否大有意義?」
問題提出以後,很快有OpenStack的開發者進行了回覆。51CTO在此摘抄了前兩名回覆進行翻譯,以供各位參考。
排名第一的答案來自RackSpace的OpenStack Swift開發者Chuck Their:
雖然HDFS與Openstack對象存儲(Swift)之間有着一些類似之處,可是這兩種系統的整體設計卻大不同。
1. HDFS使用了中央系統來維護文件元數據(Namenode,名稱節點),而在Swift中,元數據呈分佈式,跨集羣複製。使用一種中央元數據系統對HDFS來講無異於單一故障點,於是擴展到規模很是大的環境顯得更困難。
2. Swift在設計時考慮到了多租戶架構,而HDFS沒有多租戶架構這個概念。
3. HDFS針對更龐大的文件做了優化(這是處理數據時一般會出現的狀況),Swift被設計成了能夠存儲任何大小的文件。
4. 在HDFS中,文件寫入一次,並且每次只能有一個文件寫入;而在Swift中,文件能夠寫入屢次;在併發操做環境下,以最近一次操做爲準。
5. HDFS用Java來編寫,而Swift用Python來編寫。
另外,HDFS被設計成了能夠存儲數量中等的大文件,以支持數據處理,而Swift被設計成了一種比較通用的存儲解決方案,可以可靠地存儲數量很是多的大小不一的文件
註解2 -- 下面是轉載來的FastDFS和HDFS的對比:主要是定位和應用場合不同。
hadoop的文件系統HDFS主要解決並行計算中分佈式存儲數據的問題。其單個數據文件一般很大,採用了分塊(切分)存儲的方式;
FastDFS主要用於大中網站,爲文件上傳和下載提供在線服務。因此在負載均衡、動態擴容等方面都支持得比較好,FastDFS不會對文件進行分快(切分)存儲。
一句話歸納就是:HDFS是給超大的數據集設計的, FASTDFS是專爲小文件設計的,FASTDFS有JAVA 的API
註解3: --- 下面是轉載來的流行的分佈式系統的常見應用場景:
應用場景 |
可行系統 |
大數據離線/在線分析 |
HDFS、Swift、GlusterFS |
電子商務 |
TFS、FastDFS、Dynamo、Swift、Tair |
社交網絡 |
TFS、FastDFS、Dynamo、Swift、Tair |
網絡硬盤 |
HDFS、FastDFS、Swift、GlusterFS |
郵件服務 |
TFS、FastDFS、Dynamo、Swift、Tair |
圖片服務 |
TFS、FastDFS、Dynamo、Swift、Tair |
語音視頻服務 |
HDFS、FastDFS、Swift、GlusterFS |
虛擬機調度和鏡像存儲 |
HDFS、Swift、GlusterFS |
三、雲計算平臺/解決方案(提供IaaS)
CouldStack: Apache的
OpenStack: Rackspace 和 NASA 共同開發的,幫助服務商和企業內部實現相似於 Amazon EC2 和 S3 的雲基礎架構服務(Infrastructure as a Service, IaaS)
vCloud Director: VMware開發的用於部署雲的平臺