MongoDB vs Redis vs HBase

當SQL無法滿足我們的需求或者SQL已經不是必須的或者最佳的選擇時,就可以考慮NoSQL了。

MongoDB是文檔型數據庫,使用bson結構,可以更加靈活的處理嵌套結構的數據,是這三個裏最接近關係型數據庫的,有着非結構化、方便擴充字段、寫性能優於mysql等優點,萬物皆有利弊,MongoDB是內存性緩存內容,使其速度飛快;帶來內存佔用率高,掉電丟數據等問題,加上自身代碼還有很多bug造成不如老牌關係型數據庫穩定,特別是主從等分佈式環境下,其設計也帶來諸多問題。

Redis是K-V型數據庫,目標是爲了做高效的分佈式緩存,數據一般不需要要實時落盤,不適合做存儲和分析。可以認爲Redis是一個小而美的數據庫,主要用在key-valu的內存緩存,讀寫性能極佳,string, list、set、sorted set(zset)等幾種簡單的結構使其使用很簡單。緩存及使用簡單是Redis的定位,分佈式redis的出現,讓redis更加廣泛的使用。

HBase是列式數據庫,BigTable的一種實現方式,目標是高效存儲大量數據,支持列壓縮,行事務,適合Schema-less的數據。定位非結構化的大數據,可伸縮性好,並不是完全高可用,底層依靠Hadoop提供的HDFS,使用時有一整套zookeeper,pig,hive的生態系統。Cassandra可以算是一個競爭對手,但是Cassandra去中心化的自適應結構又跟HBase中心化的生態系統完全不同。

存儲類型 解決方案代表 特點
列存儲 Hbase, Cassandra, Hypertable 按列存儲,適應於數據庫壓縮,對一個或幾個字段進行查詢的效率很高
文檔存儲 MongoDB, CouchDB, Riak 保證海量數據存儲的同時,具有良好的查詢性能。用類Json格式進行存儲
key-value存儲 Dynamo, Redis, Tokyo Cabinet, MemcacheDB 具有極高的併發讀寫性能,通過key迅速查到value,但只能通過可以查詢
圖數據庫 Neo4j, HyperGraphDB 圖形關係的最佳存儲模式
對象數據庫 db4o, Versant 類似面嚮對象語言的語法操作數據庫,通過對象的方式存儲數據
XML數據庫 Berkerey DB XML, BaseX 高效存儲XML數據,並支持XML的內部查詢語法

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章