redis
優(yōu)點(diǎn):
1 . 讀寫(xiě)性能優(yōu)異
2.支持?jǐn)?shù)據(jù)持久化,支持 AOF 和 RDB 兩種持久化方式
3.支持主從復(fù)制,主機(jī)會(huì)自動(dòng)將數(shù)據(jù)同步到從機(jī),可以進(jìn)行讀寫(xiě)分離。
4.數(shù)據(jù)結(jié)構(gòu)豐富:數(shù)據(jù)結(jié)構(gòu)豐富:支持 string假丧、hash、set动羽、sortedset包帚、list 等數(shù)據(jù)結(jié)構(gòu)。
缺點(diǎn):
1.Redis 不具備自動(dòng)容錯(cuò)和恢復(fù)功能运吓,主機(jī)從機(jī)的宕機(jī)都會(huì)導(dǎo)致前端部分讀寫(xiě)請(qǐng)求失敗渴邦,需要等待機(jī)器重啟或者手動(dòng)切換前端的 IP 才能恢復(fù)。
2.主機(jī)宕機(jī)拘哨,宕機(jī)前有部分?jǐn)?shù)據(jù)未能及時(shí)同步到從機(jī)谋梭,切換 IP 后還會(huì)引入數(shù)據(jù)不一致的問(wèn)題,降低了系統(tǒng)的可用性倦青。
3.Redis的主從復(fù)制采用全量復(fù)制瓮床,復(fù)制過(guò)程中主機(jī)會(huì)fork出一個(gè)子進(jìn)程對(duì)內(nèi)存做一份快照,并將子進(jìn)程的內(nèi)存快照保存為文件發(fā)送給從機(jī),這一過(guò)程需要確保主機(jī)有足夠多的空余內(nèi)存隘庄。若快照文件較大踢步,對(duì)集群的服務(wù)能力會(huì)產(chǎn)生較大的影響,而且復(fù)制過(guò)程是在從機(jī)新加入集群或者從機(jī)和主機(jī)網(wǎng)絡(luò)斷開(kāi)重連時(shí)都會(huì)進(jìn)行丑掺,也就是網(wǎng)絡(luò)波動(dòng)都會(huì)造成主機(jī)和從機(jī)間的一次全量的數(shù)據(jù)復(fù)制获印,這對(duì)實(shí)際的系統(tǒng)運(yùn)營(yíng)造成了不小的麻煩。
4.Redis 較難支持在線擴(kuò)容街州,在集群容量達(dá)到上限時(shí)在線擴(kuò)容會(huì)變得很復(fù)雜兼丰。為避免這一問(wèn)題,運(yùn)維人員在系統(tǒng)上線時(shí)必須確保有足夠的空間菇肃,這對(duì)資源造成了很大的浪費(fèi)。
MongoDB
優(yōu)點(diǎn):
1.弱一致性(最終一致)取募,更能保證用戶的訪問(wèn)速度
2.文檔結(jié)構(gòu)的存儲(chǔ)方式琐谤,能夠更便捷的獲取數(shù)
3.內(nèi)置 GridFS,高效存儲(chǔ)二進(jìn)制大對(duì)象 (比如照片和視頻)
4.支持復(fù)制集玩敏、主備斗忌、互為主備、自動(dòng)分片等特性
5.動(dòng)態(tài)查詢
6.全索引支持,擴(kuò)展到內(nèi)部對(duì)象和內(nèi)嵌數(shù)組
缺點(diǎn):
1.不支持事務(wù)
2.MongoDB 占用空間過(guò)大
3.維護(hù)工具不夠成熟
MySql
優(yōu)點(diǎn):
1.體積小旺聚、速度快织阳、總體擁有成本低,開(kāi)源砰粹;
2.支持多種操作系統(tǒng)唧躲;
3.是開(kāi)源數(shù)據(jù)庫(kù),提供的接口支持多種語(yǔ)言連接操作
4.MySql的核心程序采用完全的多線程編程碱璃。線程是輕量級(jí)的進(jìn)程弄痹,它可以靈活地為用戶提供服務(wù),而不過(guò)多的系統(tǒng)資源嵌器。用多線程和C語(yǔ)言實(shí)現(xiàn)的MySql能很容易充分利用CPU肛真;
5.MySql有一個(gè)非常靈活而且安全的權(quán)限和口令系統(tǒng)。當(dāng)客戶與MySql服務(wù)器連接時(shí)爽航,他們之間所有的口令傳送被加密蚓让,而且MySql支持主機(jī)認(rèn)證;
6.支持ODBC for Windows讥珍, 支持所有的ODBC 2.5函數(shù)和其他許多函數(shù)历极, 可以用Access連接MySql服務(wù)器, 使得應(yīng)用被擴(kuò)展衷佃;
7.支持大型的數(shù)據(jù)庫(kù)执解, 可以方便地支持上千萬(wàn)條記錄的數(shù)據(jù)庫(kù)。作為一個(gè)開(kāi)放源代碼的數(shù)據(jù)庫(kù),可以針對(duì)不同的應(yīng)用進(jìn)行相應(yīng)的修改衰腌。
8.擁有一個(gè)非承麦。快速而且穩(wěn)定的基于線程的內(nèi)存分配系統(tǒng),可以持續(xù)使用面不必?fù)?dān)心其穩(wěn)定性右蕊;
9.MySQL同時(shí)提供高度多樣性琼稻,能夠提供很多不同的使用者介面,包括命令行客戶端操作饶囚,網(wǎng)頁(yè)瀏覽器帕翻,以及各式各樣的程序語(yǔ)言介面,例如C+萝风,Perl嘀掸,Java,PHP规惰,以及Python睬塌。你可以使用事先包裝好的客戶端,或者干脆自己寫(xiě)一個(gè)合適的應(yīng)用程序歇万。MySQL可用于Unix揩晴,Windows,以及OS/2等平臺(tái)贪磺,因此它可以用在個(gè)人電腦或者是服務(wù)器上硫兰;
缺點(diǎn):
1.不支持熱備份;
2.MySQL最大的缺點(diǎn)是其安全系統(tǒng)寒锚,主要是復(fù)雜而非標(biāo)準(zhǔn)劫映,另外只有到調(diào)用mysqladmin來(lái)重讀用戶權(quán)限時(shí)才發(fā)生改變;
3.沒(méi)有一種存儲(chǔ)過(guò)程(Stored Procedure)語(yǔ)言刹前,這是對(duì)習(xí)慣于企業(yè)級(jí)數(shù)據(jù)庫(kù)的程序員的最大限制苏研;
4.MySQL的價(jià)格隨平臺(tái)和安裝方式變化。Linux的MySQL如果由用戶自己或系統(tǒng)管理員而不是第三方安裝則是免費(fèi)的腮郊,第三方案則必須付許可費(fèi)摹蘑。Unix或Linux 自行安裝 免費(fèi) 、Unix或Linux 第三方安裝 收費(fèi)轧飞;