首頁>Club>

mongodb,redis,hbase三者都是nosql資料庫,他們的最大區別和不同定位是什麼?

52
回覆列表
  • 1 # 人月聊IT

    1. 如果你對資料的讀寫要求極高,並且你的資料規模不大,也不需要長期儲存,選redis;

    2. 如果你的資料規模較大,對資料的讀效能要求很高,資料表的結構需要經常變,有時還需要做一些聚合查詢,選MongoDB;

    3. 如果你需要構造一個搜尋引擎或者你想搞一個看著高大上的資料視覺化平臺,並且你的資料有一定的分析價值或者你的老闆是土豪,選ElasticSearch;

    4. 如果你需要儲存海量資料,連你自己都不知道你的資料規模將來會增長多麼大,那麼選HBase。

    而對於分散式資料庫的選擇,初步來看實際上可以分為三類

    1. 偏基於Hadoop體系架構和分散式儲存的,類似HDFS庫和HBase資料庫,也包括中間型別MongoDB

    2. 偏記憶體和快取類的,類似Redis庫

    3. 偏全文檢索類和資料分析類的,類似ElasticSearch和Solr庫

  • 2 # 寫程式設計師的程式碼

    一、NoSQL的簡介

    NoSQL比關係型資料庫效能高數倍。NoSQL憑藉 “易擴充套件、大資料、高可用、高效能、靈活性”特點強勢引領全場。CP型分散式資料庫,能夠保證資料的強一致性和分割槽容忍性。

    二、NoSQL的常用種類

    1、mongodb

    優點:MongoDB最大的特點是表結構靈活可變,欄位型別可以隨時修改。MongoDB是高效能、無模式的文件型資料庫,檔案儲存格式為BSON(二進位制格式的JSON),

    支援二級索引,在事務、複雜查詢應用下無法取代關係型資料庫。支援相比於HBase更復雜的集合查詢。

    簡而言之,往MySQL寫資料像是在做填空題,你寫入的資料必須與最早定義的表結構一致,而往MongoDB寫資料就像是在做問答題,想怎麼寫就怎麼寫,這靈活度不要爽太多。

    缺點:比較消耗記憶體,有事務、join(全外連線)等短板。因此,如果你的資料的邏輯結構非常複雜,經常需要進行復雜的多表查詢或者事務操作,那顯然還是MySQL這類關係型資料庫更合適。

    使用場景:得益於MongoDB的這些特點,MongoDB很適合那些表結構經常改變,資料的邏輯結構沒又沒那麼複雜不需要多表查詢操作,資料量又比較大的應用場景。

    2、redis

    Redis是現在最熱門的key-value資料庫,是記憶體亦可持久化的日誌型,讀寫效能最強。提供五種資料型別:String,hash,list,set及zset(sorted set)。

    適合儲存全域性變數和高效的分散式快取。當記憶體達到一定的閾值,資料可以定時持久化到硬碟中。

    優點:Redis的最大特點當然就是key-value儲存所帶來的簡單和高效能了。適合讀多寫少的業務場景,支援操作原子性。

    缺點:不支援二級索引。也不適合做儲存和分析。因此Redis無法提供常規資料庫所具備的多列查詢、區段查詢等複雜查詢功能。

    同時,由於Redis需要把資料存在記憶體中,因此資料量要小於HBase與MongoDB。

    應用場景:Redis犧牲了常規資料庫中的資料表、複雜查詢等功能,換來了很大的效能提升,特別適合那些對讀寫效能要求極高,且資料表結構簡單(key-value、list、set之類)、查詢條件也同樣簡單的應用場景。

    如果你的資料表結構還挺複雜,你還經常需要做一些複雜查詢操作,那你最好還是老老實實用MongoDB或者SQL吧。

    3、Hbase

    HBase是Hadoop專案的一部分,HBase列式資料庫,BigTable的一種實現。高效儲存大量資料,支援列壓縮,行事務。適合Schema-less的資料,

    適合稀疏表,一個表可以容納上億行、上百萬列,用做超大資料量要求擴充套件簡單的離線分析型應用。Hadoop的無縫整合,有資料可靠性和海量資料分析效能(MapReduce)的能力。

    優點:HBase也繼承了Hadoop專案的最大優點,那就是對海量資料的支援,以及極強的橫向(儲存容量)擴充套件能力。

    缺點:HBase的列式儲存特性帶來了海量資料規模的支援和極強的擴充套件能力,但是也給資料的讀取帶來很大的侷限。

    由於只有同一列族的資料才會被存放在一起,而且所有的查詢都必須要依賴Key,這就使得很多複雜查詢難以進行。

    應用場景:作為MapReduce(大規模資料集(大於1TB)的並行運算)的後臺資料來源;Facebook的訊息類應用,包括Messages、Chats、Emails和SMS系統,用的都是HBase。

    綜上所述:

    如果你對資料的讀寫要求極高,並且你的資料規模不大,也不需要長期儲存,選redis;

    如果你的資料規模較大,對資料的讀效能要求很高,資料表的結構需要經常變,有時還需要做一些聚合查詢,選MongoDB;

    如果你需要儲存海量資料,連你自己都不知道你的資料規模將來會增長多麼大,那麼選HBase。

  • 3 # 正心守意

    有本書叫《七週七資料庫》,裡面詳細介紹對比了七個資料庫的優缺點! 你說的這幾個在裡面都說到了! 我覺得講的挺好,挺明白的,你可以去看看的!

  • 中秋節和大豐收的關聯?
  • 推薦一下1.2w以下1w以上的配置電腦呢?