nosql数据库特点与区别?常见的
原文鏈接:https://blog.csdn.net/wyz0516071128/article/details/80877984?寫的蠻詳細(xì)的
什么是NoSQL?
NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)的統(tǒng)稱。
NoSQL用于超大規(guī)模數(shù)據(jù)的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數(shù)據(jù))。這些類型的數(shù)據(jù)存儲不需要固定的模式,無需多余操作就可以橫向擴展。
為什么使用NoSQL ?
今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數(shù)據(jù)。用戶的個人信息,社交網(wǎng)絡(luò),地理位置,用戶生成的數(shù)據(jù)和用戶操作日志已經(jīng)成倍的增加。我們?nèi)绻獙@些用戶數(shù)據(jù)進(jìn)行挖掘,那SQL數(shù)據(jù)庫已經(jīng)不適合這些應(yīng)用了, NoSQL數(shù)據(jù)庫的發(fā)展也卻能很好的處理這些大的數(shù)據(jù)。
常見的nosql?
?
二、Redis,Memcache,MongoDb的特點?
1.Redis?
優(yōu)點:
缺點:
1.Redis只能使用單線程,性能受限于CPU性能,故單實例CPU最高才可能達(dá)到5-6wQPS每秒(取決于數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)大小以及服務(wù)器硬件性能,日常環(huán)境中QPS高峰大約在1-2w左右)。 2.支持簡單的事務(wù)需求,但業(yè)界使用場景很少,并不成熟,既是優(yōu)點也是缺點。 3.Redis在string類型上會消耗較多內(nèi)存,可以使用dict(hash表)壓縮存儲以降低內(nèi)存 耗用。2.Memcache?
優(yōu)點:
- ?
3.MongoDB?
優(yōu)點:
缺點:
1.不支持事務(wù)。 2.MongoDB占用空間過大 。 3.MongoDB沒有成熟的維護(hù)工具。三、Redis、Memcache和MongoDB的區(qū)別?
1.性能
2.便利性
memcache數(shù)據(jù)結(jié)構(gòu)單一。 redis豐富一些,數(shù)據(jù)操作方面,redis更好一些,較少的網(wǎng)絡(luò)IO次數(shù)。 mongodb支持豐富的數(shù)據(jù)表達(dá),索引,最類似關(guān)系型數(shù)據(jù)庫,支持的查詢語言非常豐富。3,存儲空間
redis在2.0版本后增加了自己的VM特性,突破物理內(nèi)存的限制;可以對key value設(shè)置過 期時間(類似memcache)。 memcache可以修改最大可用內(nèi)存,采用LRU算法。 mongoDB適合大數(shù)據(jù)量的存儲,依賴操作系統(tǒng)VM做內(nèi)存管理,吃內(nèi)存也比較厲害,服務(wù)不要 和別的服務(wù)在一起。4.可用性
redis,依賴客戶端來實現(xiàn)分布式讀寫;主從復(fù)制時,每次從節(jié)點重新連接主節(jié)點都要依賴整 個快照,無增量復(fù)制,因性能和效率問題,所以單點問題比較復(fù)雜;不支持自動sharding,需 要依賴程序設(shè)定一致hash 機制。一種替代方案是,不用redis本身的復(fù)制機制,采用自己做 主動復(fù)制(多份存儲),或者改成增量復(fù)制的方式(需要自己實現(xiàn)),一致性問題和性能的權(quán) 衡。 Memcache本身沒有數(shù)據(jù)冗余機制,也沒必要;對于故障預(yù)防,采用依賴成熟的hash或者環(huán)狀的算法,解決單點故障引起的抖動問題。 mongoDB支持master-slave,replicaset(內(nèi)部采用paxos選舉算法,自動故障恢 復(fù)),auto sharding機制,對客戶端屏蔽了故障轉(zhuǎn)移和切分機制。5.可靠性
redis支持(快照、AOF):依賴快照進(jìn)行持久化,aof增強了可靠性的同時,對性能有所影 響。 memcache不支持,通常用在做緩存,提升性能。 MongoDB從1.8版本開始采用binlog方式支持持久化的可靠性。6.一致性
Memcache 在并發(fā)場景下,用cas保證一致性。 redis事務(wù)支持比較弱,只能保證事務(wù)中的每個操作連續(xù)執(zhí)行。 mongoDB不支持事務(wù)。7.數(shù)據(jù)分析
mongoDB內(nèi)置了數(shù)據(jù)分析的功能(mapreduce),其他兩者不支持。- ?
8.應(yīng)用場景
redis:數(shù)據(jù)量較小的更性能操作和運算上。 memcache:用于在動態(tài)系統(tǒng)中減少數(shù)據(jù)庫負(fù)載,提升性能;做緩存,提高性能(適合讀多寫 少,對于數(shù)據(jù)量比較大,可以采用sharding)。 MongoDB:主要解決海量數(shù)據(jù)的訪問效率問題。總結(jié)
以上是生活随笔為你收集整理的nosql数据库特点与区别?常见的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票多因子模型之截面回归
- 下一篇: python sched_python中