Redis定位在"快",HBase定位于"大",mongodb定位在"靈活"所宰。
在一般使用情況下,mongodb可以當作簡單場景下的但是性能高數(shù)倍的MySQL, Redis基本只會用來做緩存畜挥,HBase用來做離線計算仔粥。
mongodb:我覺得定位是取代關系型數(shù)據(jù)庫,想當一個主流數(shù)據(jù)庫蟹但。因為他有非結構化躯泰、方便擴充字段、寫性能優(yōu)于mysql华糖。萬事萬物有利有弊麦向,mongodb的內存型緩存內容,讓其速度飛快客叉,帶來內存率多诵竭,掉電數(shù)據(jù)問題等,加上自身代碼還有很多bug帶來不如老牌關系型數(shù)據(jù)庫穩(wěn)定兼搏,特別是在主從等分布式環(huán)境卵慰,其設計也帶來諸多問題。
redis:是一個小而美的數(shù)據(jù)庫佛呻,主要用在key-value 的內存緩存裳朋,讀寫性能極佳,list吓著,set鲤嫡,hash等幾種簡單結構使得使用也很簡單。緩存與簡單是其定位绑莺,分布式redis架構的出現(xiàn)泛范,讓redis更加廣泛的使用,穩(wěn)坐緩存第一把交椅紊撕。
hbase:定位非結構化大數(shù)據(jù)罢荡,可伸縮性好,并不是完全高可用对扶,底層依靠hadoop提供的HDFS区赵,使用時有一整套zookeeper,pig浪南,hive的生態(tài)系統(tǒng)笼才。Cassandra可以算一個競爭對手,但Cassandra去中心化的自適應結構又跟Hbase中心化的生態(tài)系統(tǒng)完全不同络凿。hbase支持強一致性骡送,cassandra一致性差一些昂羡。
1.HBase(列存儲)
兩大用途:
特別適用于簡單數(shù)據(jù)寫入(如“消息類”應用)和海量、結構簡單數(shù)據(jù)的查詢(如“詳單類”應用)摔踱。特別地虐先,適合稀疏表。(個人覺得存?zhèn)€網頁內容是極好極好的)
作為MapReduce的后臺數(shù)據(jù)源派敷,以支撐離線分析型應用蛹批。
場景:Facebook的消息類應用,包括Messages篮愉、Chats腐芍、Emails和SMS系統(tǒng),用的都是HBase试躏;淘寶的WEB版阿里旺旺猪勇,后臺是HBase;小米的米聊用的也是HBase颠蕴;移動某省公司的手機詳單查詢系統(tǒng)埠对。(單次分析,只能scan全表或者一個范圍內的)
2.MongoDB
是一個介于關系型和非關系型之間的一個產品吧裁替,類SQL語言,支持索引
MongoDb在類SQL語句操作方面目前比HBase具備更多一些優(yōu)勢貌笨,有二級索引弱判,支持相比于HBase更復雜的集合查找等。
BSON的數(shù)據(jù)結構使得處理文檔型數(shù)據(jù)更為直接锥惋。支持復雜的數(shù)據(jù)結構
MongoDb也支持mapreduce昌腰,但由于HBase跟Hadoop的結合更為緊密,Mongo在數(shù)據(jù)分片等mapreduce必須的屬性上不如HBase這么直接膀跌,需要額外處理遭商。
3.Redis
Redis為內存型KV系統(tǒng),處理的數(shù)據(jù)量要小于HBase與MongoDB
Redis很適合用來做緩存捅伤,但除此之外劫流,它實際上還可以在一些“讀寫分離”的場景下作為“讀庫”來用,特別是用來存放Hadoop或Spark的分析結果丛忆。
Redis的讀寫性能在100,000 ops/s左右祠汇,時延一般為10~70微妙左右;而HBase的單機讀寫性能一般不會超過1,000ops/s熄诡,時延則在1~5毫秒之間可很。
Redis的魅力還在于它不像HBase只支持簡單的字符串,他還支持集合set凰浮,有序集合zset和哈希hash我抠。
mongodb,redis,hbase 根據(jù)CAP分布式理論苇本,三者都是CP型分布式數(shù)據(jù)庫,能夠保證數(shù)據(jù)的強一致性和分區(qū)容忍性 菜拓,從適用場景來看:
mongodb是文檔存儲數(shù)據(jù)庫瓣窄,支持二級索引,但比較消耗內存尘惧,查詢功能強大康栈,類似json格式存儲,一般可以用來存放評論等半結構化數(shù)據(jù)
redis是KV數(shù)據(jù)庫喷橙,不支持二級索引啥么,讀寫性能高,支持list贰逾,set等多種數(shù)據(jù)格式悬荣,適合讀多寫少的業(yè)務場景,可以用來做緩存系統(tǒng)
hbase是列數(shù)據(jù)庫疙剑,不支持二級索引氯迂,寫性能高,適合寫多讀少的業(yè)務場景言缤,可用來存儲BI數(shù)據(jù)嚼蚀。
redis特點是k-v,適合存儲全局變量,比如微信token每兩小時刷新一次管挟,就比較適合用redis存儲轿曙,讀也比較方便。
mongodb 適合存儲json類型數(shù)據(jù)僻孝,不經常變化导帝,比如排行榜,每天刷新一次穿铆,remove一次再從db更新過去您单。
我的理解就是幻工,mongodb主要是做社交這一類的應用窿吩。redis是個in memory cache苹祟,主要作為軟件里一個部件來提升整體性能的氧吐。