mongodb,redis,hbase三者的定位和區別

Nosql = Not only SQLmysql


mongodb:我以爲定位是取代關係型數據庫,想當一個主流數據庫。由於他有非結構化、方便擴充字段、寫性能優於mysql。萬事萬物有利有弊,mongodb的內存型緩存內容,讓其速度飛快,帶來內存率多,掉電數據問題等,加上自身代碼還有不少bug帶來不如老牌關係型數據庫穩定,特別是在主從等分佈式環境,其設計也帶來諸多問題。
redis:是一個小而美的數據庫,主要用在key-value 的內存緩存,讀寫性能極佳,list,set,hash等幾種簡單結構使得使用也很簡單。緩存與簡單是其定位,分佈式redis架構的出現,讓redis更加普遍的使用,穩坐緩存第一把交椅。
hbase:定位非結構化大數據,可伸縮性好,並非徹底高可用,底層依靠hadoop提供的HDFS,使用時有一整套zookeeper,pig,hive的生態系統。Cassandra能夠算一個競爭對手,但Cassandra去中心化的自適應結構又跟Hbase中心化的生態系統徹底不一樣。redis

 

 
 

 

 

//下面主要總結區別和特色算法

3.HBase(列存儲)sql


兩大用途:mongodb

  • 特別適用於簡單數據寫入(如「消息類」應用)和海量、結構簡單數據的查詢(如「詳單類」應用)。特別地,適合稀疏表。(我的以爲存個網頁內容是極好極好的)
  • 做爲MapReduce的後臺數據源,以支撐離線分析型應用。

場景:Facebook的消息類應用,包括Messages、Chats、Emails和SMS系統,用的都是HBase;淘寶的WEB版阿里旺旺,後臺是HBase;小米的米聊用的也是HBase;移動某省公司的手機詳單查詢系統。(單次分析,只能scan全表或者一個範圍內的)
4.MongoDB數據庫

  • 是一個介於關係型和非關係型之間的一個產品吧,類SQL語言,支持索引
  • MongoDb在類SQL語句操做方面目前比HBase具有更多一些優點,有二級索引,支持相比於HBase更復雜的集合查找等。
  • BSON的數據結構使得處理文檔型數據更爲直接。支持複雜的數據結構
  • MongoDb也支持mapreduce,但因爲HBase跟Hadoop的結合更爲緊密,Mongo在數據分片等mapreduce必須的屬性上不如HBase這麼直接,須要額外處理。

5.Redis緩存

  • Redis爲內存型KV系統,處理的數據量要小於HBase與MongoDB
  • Redis很適合用來作緩存,但除此以外,它實際上還能夠在一些「讀寫分離」的場景下做爲「讀庫」來用,特別是用來存放Hadoop或Spark的分析結果。
  • Redis的讀寫性能在100,000 ops/s左右,時延通常爲10~70微妙左右;而HBase的單機讀寫性能通常不會超過1,000ops/s,時延則在1~5毫秒之間。
  • Redis的魅力還在於它不像HBase只支持簡單的字符串,他還支持集合set,有序集合zset和哈希hash

 

NoSQL(NoSQL = Not Only SQL ),意即「不只僅是SQL」,是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢愈加高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一律念無疑是一種全新的思惟的注入。服務器

 

NoSQL數據庫的四大分類

鍵值(Key-Value)存儲數據庫網絡

這一類數據庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對於IT系統來講的優點在於簡單、易部署。可是若是DBA只對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。[3]  舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.數據結構

列存儲數據庫。

這部分數據庫一般是用來應對分佈式存儲的海量數據。鍵仍然存在,可是它們的特色是指向了多個列。這些列是由列家族來安排的。如:Cassandra, HBase, Riak.

文檔型數據庫

文檔型數據庫的靈感是來自於Lotus Notes辦公軟件的,並且它同第一種鍵值存儲相相似。該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,好比JSON。文檔型數據庫可 以看做是鍵值數據庫的升級版,容許之間嵌套鍵值。並且文檔型數據庫比鍵值數據庫的查詢效率更高。如:CouchDB, MongoDb. 國內也有文檔型數據庫SequoiaDB,已經開源。

圖形(Graph)數據庫

圖形結構的數據庫同其餘行列以及剛性結構的SQL數據庫不一樣,它是使用靈活的圖形模型,而且可以擴展到多個服務器上。NoSQL數據庫沒有標準的查詢語言(SQL),所以進行數據庫查詢須要制定數據模型。許多NoSQL數據庫都有REST式的數據接口或者查詢API。[2]  如:Neo4J, InfoGrid, Infinite Graph.

所以,咱們總結NoSQL數據庫在如下的這幾種狀況下比較適用:一、數據模型比較簡單;二、須要靈活性更強的IT系統;三、對數據庫性能要求較高;四、不須要高度的數據一致性;五、對於給定key,比較容易映射覆雜值的環境。

 

NoSQL數據庫的四大分類表格分析

 

分類 Examples舉例 典型應用場景 數據模型 優勢 缺點
鍵值(key-value)[3]  Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 內容緩存,主要用於處理大量數據的高訪問負載,也用於一些日誌系統等等。[3]  Key 指向 Value 的鍵值對,一般用hash table來實現[3]  查找速度快 數據無結構化,一般只被看成字符串或者二進制數據[3] 
列存儲數據庫[3]  Cassandra, HBase, Riak 分佈式的文件系統 以列簇式存儲,將同一列數據存在一塊兒 查找速度快,可擴展性強,更容易進行分佈式擴展 功能相對侷限
文檔型數據庫[3]  CouchDB, MongoDb Web應用(與Key-Value相似,Value是結構化的,不一樣的是數據庫可以瞭解Value的內容) Key-Value對應的鍵值對,Value爲結構化數據 數據結構要求不嚴格,表結構可變,不須要像關係型數據庫同樣須要預先定義表結構 查詢性能不高,並且缺少統一的查詢語法。
圖形(Graph)數據庫[3]  Neo4J, InfoGrid, Infinite Graph 社交網絡,推薦系統等。專一於構建關係圖譜 圖結構 利用圖結構相關算法。好比最短路徑尋址,N度關係查找等 不少時候須要對整個圖作計算才能得出須要的信息,並且這種結構不太好作分佈式的集羣方案。[3]   
相關文章
相關標籤/搜索