Mysql和mongoDB的區(qū)別(IT楓斗者)
什么是MongoDB呢 ?
MongoDB 是由C++語言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng)。
在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。
MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
它的主要特點(diǎn)有哪些?


MySQL與MongoDB都是開源的常用數(shù)據(jù)庫,但是MySQL是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,MongoDB則是非關(guān)系型數(shù)據(jù)庫(另稱文檔型數(shù)據(jù)庫),是一種NoSQL的數(shù)據(jù)庫。它們各有各的優(yōu)點(diǎn),關(guān)鍵是看用在什么地方。所以我們所熟知的那些SQL語句就不適用于MongoDB了,因?yàn)镾QL語句是關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。
一、關(guān)系型數(shù)據(jù)庫-MySQL
在不同的引擎上有不同的存儲(chǔ)方式。
查詢語句是使用傳統(tǒng)的sql語句,擁有較為成熟的體系,成熟度很高。
開源數(shù)據(jù)庫的份額在不斷增加,mysql的份額頁在持續(xù)增長。
缺點(diǎn)就是在海量數(shù)據(jù)處理的時(shí)候效率會(huì)顯著變慢。
二、非關(guān)系型數(shù)據(jù)庫-MongoDB
非關(guān)系型數(shù)據(jù)庫(nosql ),屬于文檔型數(shù)據(jù)庫。先解釋一下文檔的數(shù)據(jù)庫,即可以存放xml、json、bson類型系那個(gè)的數(shù)據(jù)。這些數(shù)據(jù)具備自述性,呈現(xiàn)分層的樹狀數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。
存儲(chǔ)方式:虛擬內(nèi)存+持久化。
查詢語句:是獨(dú)特的MongoDB的查詢方式。
適合場景:事件的記錄,內(nèi)容管理或者博客平臺(tái)等等。
架構(gòu)特點(diǎn):可以通過副本集,以及分片來實(shí)現(xiàn)高可用。
數(shù)據(jù)處理:數(shù)據(jù)是存儲(chǔ)在硬盤上的,只不過需要經(jīng)常讀取的數(shù)據(jù)會(huì)被加載到內(nèi)存中,將數(shù)據(jù)存儲(chǔ)在物理內(nèi)存中,從而達(dá)到高速讀寫。
成熟度與廣泛度:新興數(shù)據(jù)庫,成熟度較低,Nosql數(shù)據(jù)庫中最為接近關(guān)系型數(shù)據(jù)庫,比較完善的DB之一,適用人群不斷在增長。
三、MongoDB優(yōu)勢與劣勢
優(yōu)勢:
在適量級(jí)的內(nèi)存的MongoDB的性能是非常迅速的,它將熱數(shù)據(jù)存儲(chǔ)在物理內(nèi)存中,使得熱數(shù)據(jù)的讀寫變得十分快。
MongoDB的高可用和集群架構(gòu)擁有十分高的擴(kuò)展性。
在副本集中,當(dāng)主庫遇到問題,無法繼續(xù)提供服務(wù)的時(shí)候,副本集將選舉一個(gè)新的主庫繼續(xù)提供服務(wù)。
MongoDB的Bson和JSon格式的數(shù)據(jù)十分適合文檔格式的存儲(chǔ)與查詢。
劣勢:
不支持事務(wù)操作。MongoDB本身沒有自帶事務(wù)機(jī)制,若需要在MongoDB中實(shí)現(xiàn)事務(wù)機(jī)制,需通過一個(gè)額外的表,從邏輯上自行實(shí)現(xiàn)事務(wù)。
應(yīng)用經(jīng)驗(yàn)少,由于NoSQL興起時(shí)間短,應(yīng)用經(jīng)驗(yàn)相比關(guān)系型數(shù)據(jù)庫較少。
MongoDB占用空間過大。
下面是Mysql和mongoDB的對比:
