MySQL與mongodb優點與缺點
MySQL是關係型數據庫
優點:
- 在不同的引擎上有不同 的存儲方式。
- 查詢語句是使用傳統的sql語句,擁有較爲成熟的體系,成熟度很高。
- 開源數據庫的份額在不斷增加,mysql的份額頁在持續增長。
缺點:
- 在海量數據處理的時候效率會顯著變慢。
Mongodb是非關係型數據庫(nosql ),屬於文檔型數據庫。
文檔是mongoDB中數據的基本單元,類似關係數據庫的行,多個鍵值對有序地放置在一起便是文檔,語法有點類似javascript面向對象的查詢語言,它是一個面向集合的,模式自由的文檔型數據庫。
優點:
- 快速。在適量級的內存的Mongodb的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快。
- 高擴展性。mongodb的高可用與集羣架構擁有十分高的擴展性,通過物理機器的增加,以及sharding的增加,mongodb的擴展將達到一個十分驚人的地步。
- 自身的failover機制。Mongodb的副本集配置中,當主庫遇到問題,無法繼續提供服務的時候,副本集將選舉出一個新的主庫繼續提供服務
- json的存儲格式。mongodb的json與bson格式很適合文檔格式的存儲與查詢。
缺點:
- 不支持事務
存儲方式:
- 虛擬內存+持久化。
查詢語句:
- 是獨特的Mongodb的查詢方式。
適合場景:
- 事件的記錄,內容管理或者博客平臺等等。
架構特點:
- 可以通過副本集,以及分片來實現高可用。
數據處理:
- 數據是存儲在硬盤上的,只不過需要經常讀取的數據會被加載到內存中,將數據存儲在物理內存中,從而達到高速讀寫。
Mysql和Mongodb主要應用場景
- 如果需要將mongodb作爲後端db來代替mysql使用,即這裏mysql與mongodb 屬於平行級別,那麼,這樣的使用可能有以下幾種情況的考量
- mongodb所負責部分以文檔形式存儲,能夠有較好的代碼親和性,json格式的直接寫入方便。(如日誌之類)
- 從datamodels設計階段就將原子性考慮於其中,無需事務之類的輔助。開發用如nodejs之類的語言來進行開發,對開發比較方便。
- mongodb本身的failover機制,無需使用如MHA之類的方式實現。
- 將mongodb作爲類似redis ,memcache來做緩存db,爲mysql提供服務,或是後端日誌收集分析。 考慮到mongodb屬於nosql型數據庫,sql語句與數據結構不如mysql那麼親和 ,也會有很多時候將mongodb做爲輔助mysql而使用的類redis memcache 之類的緩存db來使用。 亦或是僅作日誌收集分析。