應用場景區別-MongoDB與MySQL的選擇比較


MySQL

關系型數據庫。

在不同的引擎上有不同 的存儲方式。

查詢語句是使用傳統的sql語句,擁有較為成熟的體系,成熟度很高。

開源數據庫的份額在不斷增加,mysql的份額頁在持續增長。

缺點就是在海量數據處理的時候效率會顯著變慢。

Mongodb

非關系型數據庫(nosql ),屬於文檔型數據庫。先解釋一下文檔的數據庫,即可以存放xml、json、bson類型系那個的數據。這些數據具備自述性(self-describing),呈現分層的樹狀數據結構。數據結構由鍵值(key=>value)對組成。

存儲方式:虛擬內存+持久化。

查詢語句:是獨特的Mongodb的查詢方式。

適合場景:事件的記錄,內容管理或者博客平台等等。

架構特點:可以通過副本集,以及分片來實現高可用。

數據處理:數據是存儲在硬盤上的,只不過需要經常讀取的數據會被加載到內存中,將數據存儲在物理內存中,從而達到高速讀寫。

成熟度與廣泛度:新興數據庫,成熟度較低,Nosql數據庫中最為接近關系型數據庫,比較完善的DB之一,適用人群不斷在增長。

優勢:

  • 快速!在適量級的內存的Mongodb的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快,

  • 高擴展!

  • 自身的Failover機制!

  • json的存儲格式!

缺點:主要是無事物機制!


分析一下Mysql和Mongodb應用場景

  • 1.如果需要將mongodb作為后端db來代替mysql使用,即這里mysql與mongodb 屬於平行級別,那么,這樣的使用可能有以下幾種情況的考量: (1)mongodb所負責部分以文檔形式存儲,能夠有較好的代碼親和性,json格式的直接寫入方便。(如日志之類) (2)從data models設計階段就將原子性考慮於其中,無需事務之類的輔助。開發用如nodejs之類的語言來進行開發,對開發比較方便。 (3)mongodb本身的failover機制,無需使用如MHA之類的方式實現。

  • 2.將mongodb作為類似redis ,memcache來做緩存db,為mysql提供服務,或是后端日志收集分析。 考慮到mongodb屬於nosql型數據庫,sql語句與數據結構不如mysql那么親和 ,也會有很多時候將mongodb做為輔助mysql而使用的類redis memcache 之類的緩存db來使用。 亦或是僅作日志收集分析。

MongoDB的應用場景

1)表結構不明確且數據不斷變大
MongoDB是非結構化文檔數據庫,擴展字段很容易且不會影響原有數據。內容管理或者博客平台等,例如圈子系統,存儲用戶評論之類的。
2)更高的寫入負載
MongoDB側重高數據寫入的性能,而非事務安全,適合業務系統中有大量“低價值”數據的場景。本身存的就是json格式數據。例如做日志系統。
3)數據量很大或者將來會變得很大
Mysql單表數據量達到5-10G時會出現明細的性能降級,需要做數據的水平和垂直拆分、庫的拆分完成擴展,MongoDB內建了sharding、很多數據分片的特性,容易水平擴展,比較好的適應大數據量增長的需求。
4)高可用性
自帶高可用,自動主從切換(副本集)

不適用的場景
1)MongoDB不支持事務操作,需要用到事務的應用建議不用MongoDB。
2)MongoDB目前不支持join操作,需要復雜查詢的應用也不建議使用MongoDB。

參考鏈接:https://www.cnblogs.com/printN/p/7199928.html、https://blog.csdn.net/zombres/article/details/82020931


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM