MySQL與MonogoDB:MySQL與MongoDB之間的基本區別

MySQL與MonogoDB:MySQL與MongoDB之間的基本區別

MySQL和MongoDB事開源數據庫,MySQL與MonogoDB在數據表示、查詢、關係、事務、模式、設計和定義、規範化、速度和性能方面有很多基本差異。通過比較MySQL與MongoDB。MongoDB事一個可擴展的的高新能開源數據庫,處理面向文檔的存儲。而MySQL事一種廣泛使用的關係數據庫。在構建自定義Web應用程序時,需要考慮最適合需求的數據庫類型。

1 .》數據表時

     1.1    MySQL在表和行中表示數據

     1.2    MongoDB將數據表示偉JSON文檔集合。

      總結:  如果您考慮一下,JSON文檔與您在應用程序層中使用的文檔非常相似。如果您使用的是javascript,這正是您正在使用的。如果您使用的是PHP,則就像一個關聯數組。如果您使用的是python,它就像一個字典對象。

2. 》查詢方式 

    2.1    MySQL中的SQL代表結構化查詢語言。這是因爲您必須使用數據庫系統解析的這種查詢語言來組合一個字符串。這就是使SQL注入攻擊成爲可能的原因。
 
    2.2   MongoDB使用對象查詢。我的意思是,您將其傳遞給文檔以解釋您要查詢的內容。沒有任何語言可以解析。如果您已經熟悉SQL,那麼花一點時間來圍繞這個概念動腦筋,但是一旦弄清楚了它,它就會變得更加直觀。
 
 3. 》 關係
 
通常,關於MySQL和關係數據庫的最佳功能之一是萬能的JOIN操作。這使您可以跨多個表執行查詢。
 
MongoDB不支持聯接,但是它支持多維數據類型,例如數組,甚至其他文檔。將一個文檔放在另一個文檔中稱爲嵌入。例如,如果要使用MySQL創建博客,則將具有用於發佈的表和用於評論的表。在MongoDB中,您可能只有一個帖子集合,並且每個帖子中都有一組評論。
 
4. 》交易次數
 
   4.1  MySQL的另一個優點是它對原子事務的支持。能夠在一個事務中包含多個操作並回滾整個事物的能力,就好像它是單個操作一樣。
 
   4.2  MongoDB不支持事務,但是單個操作是原子的。
 
5. 》模式定義
 
   5.1  MySQL要求您定義表和列,然後才能存儲任何內容,並且表中的每一行必須具有相同的列。
 
   5.2  關於MongoDB,我最喜歡的事情之一是您沒有定義架構。您只需放入文檔,並且集合中的兩個文檔甚至不需要具有相同的字段。
 
6. 》模式設計和規範化
 
   6.1  在MySQL中,如果遵循規範化標準,那麼在數據結構方面確實沒有太多靈活性。這個想法是不喜歡任何特定的應用程序模式。
 
   6.2  在MongoDB中,您必須使用嵌入和鏈接而不是聯接,並且您沒有事務。這意味着您必須根據應用程序訪問數據的方式來優化架構。這對於MySQL專家來說可能很嚇人,但是如果您繼續閱讀,您會發現MySQL和MongoDB都有一個地方。
 
7. 》性能
 
   7.1  MySQL通常因性能不佳而受到指責。好吧,如果您使用的是ORM,性能可能會受到影響。如果您使用的是簡單的數據庫包裝程序,並且已正確索引了數據,則將獲得良好的性能
 
  7.2  通過犧牲諸如聯接之類的東西並提供出色的性能分析工具,MongoDB的性能要比關係數據庫好得多。您仍然需要索引數據,事實是那裏的絕大多數應用程序沒有足夠的數據來注意到差異。
 
8. 》 什麼時候應該使用MySQL?
 
   8.1  如果您的數據結構很好地適合表和行,則MySQL將爲您提供與數據的健壯輕鬆的交互。如果您關心的是性能,則很有可能您真的不需要MongoDB。最有可能的是,您只需要正確索引數據即可。如果您需要SQL或事務,則必須堅持使用MySQL。
 
9. 》什麼時候應該使用MongoDB?
 
 9.1  如果您的數據似乎很難在關係數據庫系統中建模,或者發現自己對數據庫模式進行了規範化或圍繞性能問題進行編碼,則應考慮使用MongoDB。如果您發現自己嘗試存儲序列化的數組或JSON對象,則表明您最好不要使用MongoDB。如果您無法預先定義架構,或者想要將記錄存儲在具有不同字段的同一集合中,那是另一個很好的理由。
 
結論
 
您可能以爲這將完全取決於性能,但是MySQL和MongoDB都非常有用,並且它們的基本操作之間的差異遠不只是性能。這實際上取決於您的特定應用程序的需求。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章