項(xiàng)目中用的是MongoDB,但是為什么用其實(shí)當(dāng)時(shí)選型的時(shí)候也沒有太多考慮,只是認(rèn)為數(shù)據(jù)量比較大,所以采用MongoDB。
最近又想起為什么用MongoDB,就查閱一下,匯總匯總:
之前也用過(guò)redis,當(dāng)時(shí)是用來(lái)存儲(chǔ)一些熱數(shù)據(jù),量也不大,但是操作很頻繁?,F(xiàn)在項(xiàng)目中用的是MongoDB,目前是百萬(wàn)級(jí)的數(shù)據(jù),將來(lái)會(huì)有千萬(wàn)級(jí)、億級(jí)。
就Redis和MongoDB來(lái)說(shuō),大家一般稱之為Redis緩存、MongoDB數(shù)據(jù)庫(kù)。這也是有道有理有根據(jù)的,
Redis主要把數(shù)據(jù)存儲(chǔ)在內(nèi)存中,其“緩存”的性質(zhì)遠(yuǎn)大于其“數(shù)據(jù)存儲(chǔ)“的性質(zhì),其中數(shù)據(jù)的增刪改查也只是像變量操作一樣簡(jiǎn)單;
MongoDB卻是一個(gè)“存儲(chǔ)數(shù)據(jù)”的系統(tǒng),增刪改查可以添加很多條件,就像SQL數(shù)據(jù)庫(kù)一樣靈活,這一點(diǎn)在面試的時(shí)候很受用。
點(diǎn)擊查看:MongoDB語(yǔ)法與現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)SQL語(yǔ)法比較
Mongodb與Redis應(yīng)用指標(biāo)對(duì)比
MongoDB和Redis都是NoSQL,采用結(jié)構(gòu)型數(shù)據(jù)存儲(chǔ)。二者在使用場(chǎng)景中,存在一定的區(qū)別,這也主要由于 二者在內(nèi)存映射的處理過(guò)程,持久化的處理方法不同。MongoDB建議集群部署,更多的考慮到集群方案,Redis 更偏重于進(jìn)程順序?qū)懭耄m然支持集群,也僅限于主-從模式。
指標(biāo) | MongoDB(v2.4.9) | Redis(v2.4.17) | 比較說(shuō)明 |
實(shí)現(xiàn)語(yǔ)言 |
C++ |
C/C++ |
- |
協(xié)議 |
BSON、自定義二進(jìn)制 |
類Telnet |
- |
性能 |
依賴內(nèi)存,TPS較高 |
依賴內(nèi)存,TPS非常高 |
Redis優(yōu)于MongoDB |
可操作性 |
豐富的數(shù)據(jù)表達(dá)、索引;最類似于關(guān)系數(shù)據(jù)庫(kù),支持豐富的查詢語(yǔ)言 |
數(shù)據(jù)豐富,較少的IO |
MongoDB優(yōu)于Redis |
內(nèi)存及存儲(chǔ) |
適合大數(shù)據(jù)量存儲(chǔ),依賴系統(tǒng)虛擬內(nèi)存管理,采用鏡像文件存儲(chǔ);內(nèi)存占有率比較高,官方建議獨(dú)立部署在64位系統(tǒng)(32位有最大2.5G文件限制,64位沒有改限制) |
Redis2.0后增加虛擬內(nèi)存特性,突破物理內(nèi)存限制;數(shù)據(jù)可以設(shè)置時(shí)效性,類似于memcache |
不同的應(yīng)用角度看,各有優(yōu)勢(shì) |
可用性 |
支持master-slave,replicaset(內(nèi)部采用paxos選舉算法,自動(dòng)故障恢復(fù)),auto sharding機(jī)制,對(duì)客戶端屏蔽了故障轉(zhuǎn)移和切分機(jī)制 |
依賴客戶端來(lái)實(shí)現(xiàn)分布式讀寫;主從復(fù)制時(shí),每次從節(jié)點(diǎn)重新連接主節(jié)點(diǎn)都要依賴整個(gè)快照,無(wú)增量復(fù)制;不支持自動(dòng)sharding,需要依賴程序設(shè)定一致hash機(jī)制 |
MongoDB優(yōu)于Redis;單點(diǎn)問題上,MongoDB應(yīng)用簡(jiǎn)單,相對(duì)用戶透明,Redis比較復(fù)雜,需要客戶端主動(dòng)解決。(MongoDB 一般會(huì)使用replica sets和sharding功能結(jié)合,replica sets側(cè)重高可用性及高可靠性,而sharding側(cè)重于性能、易擴(kuò)展) |
可靠性 |
從1.8版本后,采用binlog方式(MySQL同樣采用該方式)支持持久化,增加可靠性 |
依賴快照進(jìn)行持久化;AOF增強(qiáng)可靠性;增強(qiáng)可靠性的同時(shí),影響訪問性能 |
MongoDB優(yōu)于Redis |
一致性 |
不支持事物,靠客戶端自身保證 |
支持事物,比較弱,僅能保證事物中的操作按順序執(zhí)行 |
Redis優(yōu)于MongoDB |
數(shù)據(jù)分析 |
內(nèi)置數(shù)據(jù)分析功能(mapreduce) |
不支持 |
MongoDB優(yōu)于Redis |
應(yīng)用場(chǎng)景 |
海量數(shù)據(jù)的訪問效率提升 |
較小數(shù)據(jù)量的性能及運(yùn)算 |
MongoDB優(yōu)于Redis |
參考鏈接:https://yq.aliyun.com/ziliao/64031
|