mongodb使用場景 redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?
redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?Mongodb不應(yīng)該與redis/Memcache相比,因?yàn)樗鼈兊膽?yīng)用場景完全不同。Mongodb是介于內(nèi)存數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫
redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?
Mongodb不應(yīng)該與redis/Memcache相比,因?yàn)樗鼈兊膽?yīng)用場景完全不同。
Mongodb是介于內(nèi)存數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫之間的數(shù)據(jù)庫。它是一個(gè)高性能、無模式的文檔數(shù)據(jù)庫。
Mongodb數(shù)據(jù)存儲在磁盤上。只有在必要時(shí),才會通過MMAP映射到內(nèi)存,并在內(nèi)存中進(jìn)行修改。修改后,操作系統(tǒng)負(fù)責(zé)刷新磁盤。
優(yōu)點(diǎn):支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),能存儲海量數(shù)據(jù),能提供關(guān)系數(shù)據(jù)庫等強(qiáng)大的查詢功能。
Redis是一個(gè)開源的鍵值存儲系統(tǒng)。所有數(shù)據(jù)都存儲在內(nèi)存中。持久性處于RDB模式或AOF模式。只支持key、string、hash、list和set。優(yōu)點(diǎn):讀寫速度非???。缺點(diǎn):受內(nèi)存限制,不能存儲太多的數(shù)據(jù),不能提供強(qiáng)大的查詢功能,只能使用單核。
Memcache是一個(gè)高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)web應(yīng)用程序以減少數(shù)據(jù)庫負(fù)載。Memcache只支持簡單的鍵值結(jié)構(gòu),但使用多核。
在爬蟲中,經(jīng)常使用redis mongodb的方式。Mongodb用來存儲被爬網(wǎng)的海量數(shù)據(jù),redis用來消除重復(fù)并保存被爬網(wǎng)的URL。
談?wù)刴ongodb,mysql的區(qū)別和具體應(yīng)用場景?
看看官方文件。
練習(xí)編程示例。
看看源代碼。
一般互聯(lián)網(wǎng)公司使用mysql、redis、mongodb作為存儲層,Hadoop、spark進(jìn)行大數(shù)據(jù)分析。
MySQL適用于結(jié)構(gòu)化數(shù)據(jù),類似于excel,它是嚴(yán)格定義的。它用于數(shù)據(jù)量,其速度一般支持事務(wù)處理。
Redis適用于緩存內(nèi)存對象,如緩存隊(duì)列。它用于事務(wù)處理的數(shù)據(jù)量小、速度快、并發(fā)性高。
Mongodb,適用于半結(jié)構(gòu)化數(shù)據(jù),如文本信息,適用于數(shù)據(jù)量大、速度快、不支持事務(wù)處理的場合。
Hadoop是一個(gè)生態(tài)系統(tǒng),包含許多用于大數(shù)據(jù)分析的組件,適用于以后的大數(shù)據(jù)分析任務(wù)。
Spark類似于Hadoop,它傾向于內(nèi)存計(jì)算和流計(jì)算。適用于實(shí)時(shí)和半實(shí)時(shí)的大數(shù)據(jù)分析任務(wù)。
移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)使數(shù)據(jù)呈指數(shù)增長。NoSQL大數(shù)據(jù)出現(xiàn)后,數(shù)據(jù)存儲領(lǐng)域發(fā)展迅速。發(fā)展方向似乎是大數(shù)據(jù)、內(nèi)存計(jì)算、分布式框架和平臺。有許多新的方法,如apacheignite,它適合于內(nèi)存計(jì)算,并集成了許多功能模塊。阿帕奇風(fēng)暴,火花和弗林克也有自己的特點(diǎn)。
一般來說,TB和GB級別的數(shù)據(jù)存儲不能達(dá)到Pb級別。Mongodb和MySQL就足夠了。Hadoop和spark是航空母艦。它們通常用于大規(guī)模的應(yīng)用場景,主要用于后期分析和統(tǒng)計(jì),如電子商務(wù)的推薦系統(tǒng)分析系統(tǒng)。
聰明的戰(zhàn)士總是選擇正確的武器。有必要分析業(yè)務(wù)特點(diǎn)和未來業(yè)務(wù)發(fā)展需要,決定采用何種數(shù)據(jù)存儲策略或混合使用。