nosql數(shù)據(jù)庫有哪些, 什么是nosql數(shù)據(jù)庫?不知道小伙伴們今天來看看邊肖的分享吧!
一個(gè)議員普通的關(guān)于NoSQLDie Datenbank hatRedis,Memcache,MongoDB .
二標(biāo)籤:Redis、Memcache、MongoDB的特點(diǎn):
Redis
優(yōu)勢:
1.支持多種數(shù)據(jù)結(jié)構(gòu),如string(字符串)、list(鏈表)、dict(哈希表)、set(集合)、zset(排序集)、hyperloglog(基數(shù)估計(jì))。
2.支持持久化操作,可以將aof和rdb數(shù)據(jù)持久化到磁盤,以便進(jìn)行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù),是防止數(shù)據(jù)丟失的較好手段。
3.支持通過復(fù)制進(jìn)行數(shù)據(jù)復(fù)制,通過主從機(jī)制實(shí)時(shí)同步數(shù)據(jù)復(fù)制,支持多級復(fù)制和增量復(fù)制。主從機(jī)制是Redis進(jìn)行HA的重要手段。
4.單線程請求,所有命令串行執(zhí)行,在并發(fā)的情況下不需要考慮數(shù)據(jù)一致性。
5.支持pub/sub消息訂閱機(jī)制,可用于消息訂閱和通知。
6.支持簡單的交易需求,但行業(yè)內(nèi)使用場景較少,不太成熟。
缺點(diǎn):
1.Redis只能使用單線程,性能受限于CPU的性能,所以單實(shí)例CPU最高可以達(dá)到每秒5-6wQPS(具體取決于數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)大小和服務(wù)器硬件性能,日常環(huán)境下QPS峰值在1-2w左右)。
2.支持簡單的交易需求,但行業(yè)內(nèi)的場景少且不成熟,有利也有弊。
3.Redis在字符串類型上會(huì)消耗更多內(nèi)存,可以用dict(哈希表)壓縮存儲(chǔ)來減少內(nèi)存。
消費(fèi)。
Memcache
優(yōu)勢:
1.Memcached可以利用多核的優(yōu)勢,單實(shí)例吞吐量極高,達(dá)到幾十萬QPS(取決于key和值的字節(jié)大小和服務(wù)器的硬件性能,日常環(huán)境下QPS峰值在4-6w左右)。適合最大承載能力。
2.支持直接配置為會(huì)話句柄。
缺點(diǎn):
1只支持簡單的鍵/值數(shù)據(jù)結(jié)構(gòu),不像Redis可以支持豐富的數(shù)據(jù)類型。
2.不能持久化,數(shù)據(jù)不能備份,只能用于緩存,重啟后數(shù)據(jù)全部丟失。
3.無法執(zhí)行數(shù)據(jù)同步,MC中的數(shù)據(jù)無法遷移到其他MC實(shí)例。
4.Memcached內(nèi)存分配使用Slab分配機(jī)制來管理內(nèi)存。當(dāng)值大小分布差異較大時(shí),會(huì)降低內(nèi)存利用率,造成利用率低時(shí)踢出等問題。用戶需要重視價(jià)值設(shè)計(jì)。
MongoDB
優(yōu)勢:
1.在更高的寫負(fù)載下,MongoDB具有更高的插入速度。
2.處理大規(guī)模的單表。數(shù)據(jù)表過大時(shí),很容易分表。
3.高可用性,設(shè)置M-S不僅方便而且快捷,MongoDB還可以快速、安全、自動(dòng)地實(shí)現(xiàn)節(jié)點(diǎn)(數(shù)據(jù)中心)故障切換。
4.快速查詢,MongoDB支持二維空間索引,比如管道,所以可以快速準(zhǔn)確的從指定位置獲取數(shù)據(jù)。啟動(dòng)后,MongoDB會(huì)將數(shù)據(jù)庫中的數(shù)據(jù)以文件映射的形式加載到內(nèi)存中。如果內(nèi)存資源非常充足,
這將大大提高數(shù)據(jù)庫的查詢速度。
5.隨著非結(jié)構(gòu)化數(shù)據(jù)的爆炸式增長,添加列在某些情況下可能會(huì)鎖定整個(gè)數(shù)據(jù)庫,或者增加負(fù)載,從而導(dǎo)致性能下降。由于MongoDB的弱數(shù)據(jù)結(jié)構(gòu)模式,添加一個(gè)新字段不會(huì)對舊表產(chǎn)生任何影響,整個(gè)過程會(huì)非??臁?
缺點(diǎn):
1.不支持交易。
2.MongoDB占用空間太大。
3.MongoDB沒有成熟的維護(hù)工具。
Three labels: Redis, Memcache and MongoDB:
1.表演
三者性能比較高。總的來說,Memcache和Redis差不多,高于MongoDB。
2.便利
Memcache只有一個(gè)數(shù)據(jù)結(jié)構(gòu)。
Redis更豐富,數(shù)據(jù)操作方面,redis更好,網(wǎng)絡(luò)IO次數(shù)更少。
Mongodb支持豐富的數(shù)據(jù)表達(dá)、索引,最類似于關(guān)系數(shù)據(jù)庫,支持非常豐富的查詢語言。
3、儲(chǔ)物空間
Redis在2.0版本之后加入了自己的VM特性,突破了物理內(nèi)存的限制;您可以為鍵值設(shè)置過期時(shí)間(類似于memcache)。
Memcache可以修改最大可用內(nèi)存,并采用LRU算法。
MongoDB適合存儲(chǔ)大量數(shù)據(jù),依靠操作系統(tǒng)VM進(jìn)行內(nèi)存管理,吃內(nèi)存也很厲害。服務(wù)不應(yīng)與其他服務(wù)放在一起。
4.有效性
Redis,依托客戶端實(shí)現(xiàn)分布式讀寫;在主從復(fù)制中,每次從節(jié)點(diǎn)重新連接到主節(jié)點(diǎn)時(shí),都依賴于整個(gè)快照,沒有增量復(fù)制。由于性能和效率問題,單點(diǎn)問題更加復(fù)雜。不支持自動(dòng)分片,但這是必需的。
依靠程序來設(shè)置一致的散列機(jī)制。一個(gè)替代方案是自己做主動(dòng)復(fù)制(多存儲(chǔ)),沒有redis本身的復(fù)制機(jī)制,或者改成增量復(fù)制(需要自己實(shí)現(xiàn)),一致性問題,性能權(quán)限。
恒。
Memcache本身沒有數(shù)據(jù)冗余機(jī)制,沒有必要;對于故障預(yù)防,采用成熟的hash或ring算法解決單點(diǎn)故障引起的抖動(dòng)問題。
mongoDB支持master-slave,replicaset(內(nèi)部采用paxos選舉算法,自動(dòng)故障恢復(fù)),auto sharding機(jī)制,對客戶端屏蔽了故障轉(zhuǎn)移和切分機(jī)制。
5.可靠性
redis支持(快照、AOF):依賴快照進(jìn)行持久化,aof增強(qiáng)了可靠性的同時(shí),對性能有所影響。
memcache不支持,通常用在做緩存,提升性能。
MongoDB從1.8版本開始采用binlog方式支持持久化的可靠性。
6.一致性
Memcache 在并發(fā)場景下,用cas保證一致性。
redis事務(wù)支持比較弱,只能保證事務(wù)中的每個(gè)操作連續(xù)執(zhí)行。
mongoDB不支持事務(wù)。
7.數(shù)據(jù)分析
mongoDB內(nèi)置了數(shù)據(jù)分析的功能(mapreduce),其他兩者不支持。
8.應(yīng)用場景
redis:數(shù)據(jù)量較小的更性能操作和運(yùn)算上。
memcache:用于在動(dòng)態(tài)系統(tǒng)中減少數(shù)據(jù)庫負(fù)載,提升性能;做緩存,提高性能(適合讀多寫少,對于數(shù)據(jù)量比較大,可以采用sharding)。
MongoDB:主要解決海量數(shù)據(jù)的訪問效率問題。
nosql數(shù)據(jù)庫有哪些,以上就是本文為您收集整理的nosql數(shù)據(jù)庫有哪些最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。