{eval=Array;=+count(Array);}
mysql、redis、MongoDB基本上在對(duì)應(yīng)的業(yè)務(wù)場景中都會(huì)用到。習(xí)慣上,所有的業(yè)務(wù)數(shù)據(jù)都是需要“落庫”的,這種“落庫”指關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)寫入,可以很直觀的在關(guān)系型數(shù)據(jù)庫的客戶端進(jìn)行查詢,可以持久化到磁盤空間,因 mysql 開源穩(wěn)定,滿足業(yè)務(wù)需求,其成為互聯(lián)網(wǎng)公司的最優(yōu)選擇。而 redis 經(jīng)常在高并發(fā)的請(qǐng)求加速、優(yōu)化用戶體驗(yàn)中用到,普遍的做法是將數(shù)據(jù)庫中的數(shù)據(jù)請(qǐng)求一次,放入緩存中,同時(shí)返回給用戶,而修改數(shù)據(jù)庫時(shí)對(duì)緩存數(shù)據(jù)進(jìn)行清理,保障數(shù)據(jù)一致性。而對(duì)于mongoDB,我在業(yè)務(wù)中使用不多,但其可以高效存儲(chǔ)二進(jìn)制大對(duì)象 (比如照片、視頻、消息等),在業(yè)界得到了充分的認(rèn)可。下面簡述一下其各自的優(yōu)缺點(diǎn),僅供參考。
mysql,優(yōu)點(diǎn):體積小、速度快、總體擁有成本低,開源,提供的接口支持多種語言連接操作;支持多種操作系統(tǒng);采用完全的多線程編程,線程輕量;鑒權(quán)體系完善。缺點(diǎn):不支持熱備份,但可通過binlog日志進(jìn)行同步;不支持自定義數(shù)據(jù)類型;對(duì) xml 支持不夠良好,但此基本上可以忽略,目前很少見到 xml 的使用。
redis,優(yōu)點(diǎn):讀寫性能優(yōu)異,選擇的最大理由;支持?jǐn)?shù)據(jù)持久化,支持 AOF 和 RDB 兩種持久化方式;支持主從復(fù)制,可以進(jìn)行讀寫分離;數(shù)據(jù)結(jié)構(gòu)豐富;缺點(diǎn):不具備自動(dòng)容錯(cuò)和恢復(fù)功能,主機(jī)從機(jī)宕機(jī)導(dǎo)致客戶端請(qǐng)求失??;主機(jī)宕機(jī),宕機(jī)前有部分?jǐn)?shù)據(jù)未能及時(shí)同步到從機(jī),切換 IP 后還會(huì)引入數(shù)據(jù)不一致的問題,降低了系統(tǒng)的可用性;Redis 的主從復(fù)制采用全量復(fù)制,網(wǎng)絡(luò)波動(dòng)時(shí)可能進(jìn)行全量的數(shù)據(jù)復(fù)制,對(duì)集群造成壓力;Redis 較難支持在線擴(kuò)容,在集群容量達(dá)到上限時(shí)在線擴(kuò)容比較復(fù)雜。
MongoDB,優(yōu)點(diǎn):弱一致性(最終一致),更能保證用戶的訪問速度;文檔結(jié)構(gòu)的存儲(chǔ)方式,能夠更便捷的獲取數(shù);高效存儲(chǔ)二進(jìn)制大對(duì)象 (比如照片、視頻、消息等);與其他的NoSQL相比第三方支持豐富;缺點(diǎn):不支持事務(wù)操作;占用空間過大;成熟的維護(hù)工具較為欠缺。
個(gè)人感覺,redis 適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可預(yù)見(適合內(nèi)存容量)的業(yè)務(wù)場景,其適合做關(guān)系型數(shù)據(jù)庫的中間層。MongoDB 可以作為大數(shù)據(jù)對(duì)象 (比如照片、視頻、消息等)的數(shù)據(jù)緩存層組合出一個(gè)必要的數(shù)據(jù)實(shí)體(靈活的 json 結(jié)構(gòu)可以組合出復(fù)雜數(shù)據(jù)類型,又可以復(fù)制多臺(tái)服務(wù)器),讀取速度也快,高并發(fā)構(gòu)建主從服務(wù)器無壓力。
作者:夕陽雨晴,歡迎關(guān)注我的頭條號(hào):偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。
目前看來,關(guān)系型的數(shù)據(jù)庫和非關(guān)系型的數(shù)據(jù)庫是互補(bǔ)的,并不是互相取代的,因?yàn)檫@兩者的適用場景不同。
關(guān)系型數(shù)據(jù)庫適應(yīng)場景是:業(yè)務(wù)復(fù)雜并且需要很多的關(guān)聯(lián),對(duì)讀操作沒有太大要求,但是需要對(duì)事務(wù)的支持。
非關(guān)系型數(shù)據(jù)庫適用場景是:業(yè)務(wù)相對(duì)簡單,對(duì)讀操作要求很高,而且數(shù)據(jù)吞吐量大,還能支持快速擴(kuò)容等場景。
因此,這兩種數(shù)據(jù)庫在未來都會(huì)一直存在,在各自的場景發(fā)揮自己的作用,每一種新技術(shù)的誕生都是為解決現(xiàn)有的一些痛處的,技術(shù)選型沒有最好的,只有最適合的技術(shù)。
場景不一樣,redis雖然也算一種數(shù)據(jù)庫,但是一般更多的用于加速訪問數(shù)據(jù)庫數(shù)據(jù)
mongodb是非關(guān)系型數(shù)據(jù)庫更多的用于快速存儲(chǔ)數(shù)據(jù)
1、數(shù)據(jù)結(jié)構(gòu)模型是需要關(guān)系連接的(nosql Redis存儲(chǔ)是沒有問題的)nosqlRedis讀取不方便 幾乎做不到
2、快是因?yàn)樵趦?nèi)存中存儲(chǔ)也就是說沒有持久化 nosql Redis持久化 預(yù)估性能差不多少
3、邏輯及實(shí)現(xiàn)復(fù)雜程度遠(yuǎn)高于關(guān)系型數(shù)據(jù)庫
我們就是用MongoDB替代sql,很好用。新版本也支持事務(wù)了,微服務(wù)的大殺器。當(dāng)然了,內(nèi)存價(jià)格確實(shí)昂貴,所以等數(shù)據(jù)量上去后,會(huì)考慮使用TiDB。
0
回答0
回答0
回答0
回答0
回答2
回答0
回答0
回答0
回答0
回答