經典技術面試題(八股文) Mysql和MongoDB和MySQL的區別是啥? 說說各自的差異和共同點

字號+ 編輯: 种花家 修訂: 听风就是我 來源: 网络转载 2023-09-11 我要說兩句(0)

這個文章值得一讀, 因爲相關的問題經常被各技術公司提起。

前言

MySQL與MongoDB都是開源的常用數據庫,但是MySQL是傳統的關係型數據庫,MongoDB則是非關係型數據庫,也叫文档型數據庫,是一種NoSQL的數據庫。它們各有各的優點,關鍵是看用在什麽地方。所以我們所熟知的那些SQL語句就不適用於MongoDB了... 畢竟SQL是關係型數據庫的標準語言。

一、關係型數據庫MySQL

1、在不同的引擎上有不同的存儲方式。
2、查詢語句是使用傳統的sql語句,擁有較爲成熟的體系,成熟度很高。
3、開源數據庫的份額在不斷增加,mysql的份額頁在持續增長。
4、缺點就是在海量數據處理的時候效率會顯著變慢。

二、非關係型數據庫MongoDB

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

1、存儲方式:虛擬内存+持久化。
2、查詢語句:是獨特的MongoDB的查詢方式。
3、適合場景:事件的記錄,内容管理或者部落格平台等等。
4、架構特點:可以通過副本集,以及分片來實現高可用。
5、數據處理:數據是存儲在硬盤上的,只不過需要經常讀取的數據會被加載到内存中,將數據存儲在物理内存中,從而達到高速讀寫。
6、成熟度與廣泛度:新興數據庫,成熟度較低,Nosql數據庫中最爲接近關係型數據庫,比較完善的DB之一,適用人群不斷在增長。

三、MongoDB優勢與劣勢

優勢:

1、在插滿了ECC内存條的服務器面前, MongoDB的性能是tmd非常迅速的,它將所謂的“熱數據”存儲在物理内存中,根據場景優化IO, 可達到非常滿意的效果。
2、MongoDB廣受高可用和集群架構師青睞(例如AWS那群人)。老外的Java後耑公司愛玩。玩好了性能和可用性逆天。因爲邏輯寫起來不像MySQL那種傻瓜式的扒拉兩下就OK的, 筆者建議你用Java/PHP/Go/Nodejs/Python這類腳本配合玩,如果你是用Rust/C++/C結合MongoDB來進行業務開發複雜CURD邏輯~ 結果就是翻車,或者讓你的團隊頂著惡臭的名聲加給debug到天亮。
3、在副本集中,當主庫遇到問題,無法繼續提供服務的時候,副本集將選舉一個新的主庫繼續提供服務。
4、MongoDB的Bson和JSon格式的數據十分適合文档格式的存儲與查詢。

劣勢:

1、 正常意義上來說無法做事務。因爲MongoDB的主流NoSQL玩法本身沒有自帶事務機制,若需要在MongoDB中實現事務機制,需通過一個額外的表,從邏輯上自己實現事務。
2、國内不是特別多公司用到MongoDB, 海外較多。
3、MongoDB佔用空間硬盤超大, 不過硬盤倒沒有内存值錢, 孰優孰劣自行評估。

對比表格

數據庫
MongodbMySQL
數據庫模型非關係關係型
存儲模式以類JSON的文档的格式存儲多種引擎, 主要用innodb
成熟度新興數據庫, 開源商業免費級數據庫
廣泛度完善且開源,海外公司使用度比國内廣泛老少皆宜
事務僅支持單文档事務操作, 弱一致性支持事務操作
佔用硬盤空間
join連表支持


閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • git clone或者git pull因爲網路問題導致失敗

  • 古爾曼:蘋果公司正將更多注意力轉向6G研發

  • 大裁員, 巨虧, 知乎“值乎”?

  • 小談互聯網變現掙錢的14個模式

我要說說
網上賓友點評