NOSQL之Redis-MongoDB-Hbase的區別和場景

1、NoSQL的簡介redis

        NoSQL比關係型數據庫性能高數倍。NoSQL憑藉 「易擴展、大數據、高可用、高性能、靈活性」特色強勢引領全場。CP型分佈式數據庫,可以保證數據的強一致性和分區容忍性。mongodb

2、NoSQL的經常使用種類數據庫

   最大區別: mongodb在簡單場景下性能高於MySQL的數倍, Redis基本只會用來作緩存,HBase用來作離線計算。緩存

 下面,簡單介紹下微信

1> MongoDB(無模式/文檔型數據庫,「靈活」)less

      MongoDB是高性能、無模式的文檔型數據庫,文件存儲格式爲BSON(二進制格式的JSON),支持二級索引,在事務、複雜查詢應用下沒法取代關係型數據庫。支持相比於HBase更復雜的集合查找。分佈式

優勢:適合複雜數據格式存儲及查詢。oop

缺點:比較消耗內存,有事務、join(全外鏈接)等短板性能

適用場景:排行榜,天天刷新一次,remove一次再從db更新過去。大數據

 

2> Redis(k-v內存數據庫,「快」)

     Redis是內存亦可持久化的日誌型和Key-Value型內存數據庫,讀寫性能最強,提供五種數據類型:String,hash,list,set及zset(sorted set)適合存儲全局變量和高效的分佈式緩存。當內存達到必定的閾值,數據能夠定時持久化到硬盤中。

     優勢:

           適合讀多寫少的業務場景,支持操做原子性。

      讀寫性能在100,000 ops/s(operation per second 每秒操做次數)左右,時延通常爲10~70微妙左右;而HBase的單機讀寫性能通常不會超過1,000ops/s,時延則在1~5毫秒之間。

     缺點:不支持二級索引。也不適合作存儲和分析。處理的數據量要小於HBase與MongoDB。

   適用場景:

           「讀寫分離」的場景下做爲「讀庫」用,特別是存放Hadoop或Spark的分析結果。

        微信token每兩小時刷新一次,就比較適合用redis存儲,讀也比較方便。

 

3> Hbase(列數據庫,「大」)

     HBase列式數據庫,BigTable的一種實現。高效存儲大量數據,支持列壓縮,行事務。適合Schema-less的數據,適合稀疏表,一個表能夠容納上億行、上百萬列,用作超大數據量要求擴展簡單的離線分析型應用。Hadoop的無縫集成,有數據可靠性和海量數據分析性能(MapReduce)的能力。

     優勢:寫性能高,適合超高量級寫入的場景,適合寫多讀少的業務場景,可用來存儲BI數據及存儲大數據。

     缺點:不支持二級索引。

  適用場景:做爲MapReduce(大規模數據集(大於1TB)的並行運算)的後臺數據源;Facebook的消息類應用,包括Messages、Chats、Emails和SMS系統,用的都是HBase;淘寶的WEB版阿里旺旺,後臺是HBase;小米的米聊用的也是HBase;移動某省公司的手機詳單查詢系統。(單次分析,只能scan全表或者一個範圍內的)

相關文章
相關標籤/搜索