1. 程式人生 > >mysql和monggodb比較

mysql和monggodb比較

一、概要

幾十年來,關係型資料庫已經成為企業應用程式的基礎,自從MySQL在1995年釋出以來,它已經成為一種受歡迎並且廉價的選擇。然而隨著近年來資料量和資料的不斷激增,非關係資料庫技術如MongoDB應運而生,以滿足新應用的需求。 MongoDB用於新的應用程式,以及擴充或替換現有的關係型基礎設施(關係型資料庫)。

 

二、什麼是Mysql

 

MySQL是由Oracle公司開發,釋出和支援的受歡迎的開源關係資料庫管理系統(RDBMS)。像其他關係系統一樣,MySQL將資料儲存在表中,並使用結構化查詢語言(SQL)來進行資料庫訪問。在MySQL中,您可以根據需要預先定義資料庫模式,並設定規則來管理表中欄位之間的關係。在MySQL中,相關資訊可能儲存在單獨的表中,但通過使用關聯查詢來關聯。通過使用這種方式,使得資料重複量被最小化。

 

三、 什麼是MongoDB

 

MongoDB是由MongoDB,Inc.開發的開源資料庫。MongoDB將資料儲存在類似JSON的文件中,並且文件中每個json串結構可能有所不同。相關資訊儲存在一起,通過MongoDB查詢語言進行快速查詢訪問。 MongoDB使用動態模式,這意味著您可以在不首先定義結構的情況下建立記錄,例如欄位或其值的型別。您可以通過新增新欄位或刪除現有記錄來更改記錄的結構(我們稱之為文件)。該資料模型可以讓您輕鬆地代表層次關係,儲存陣列和其他更復雜的結構。集合中的文件不需要具有相同的一組欄位,資料的非規範化是常見的。 MongoDB還設計了高可用性和可擴充套件性,並提供了即用型複製和自動分片功能。

 

四、 術語和概念

 

MySQL中的許多概念在MongoDB中具有相近的類比。本表概述了每個系統中的一些常見概念。

MySQL MongoDB
集合
文件
欄位
joins 嵌入文件或者連結

 

五、 特色對比

 

像MySQL一樣,MongoDB提供了豐富的遠遠超出了簡單的鍵值儲存中提供的功能和功能。 MongoDB具有查詢語言,功能強大的輔助索引(包括文字搜尋和地理空間),資料分析功能強大的聚合框架等。相比使用關係資料庫使用MongoDB,您還可以使用這些功能,跨越更多樣化的資料型別和資料規模。

  MySQL MongoDB
豐富的資料模型
動態Schema
資料型別
資料本地化
欄位更新
易於程式設計
複雜事務
審計
自動分片

 

六、 查詢語言

 

MySQL和MongoDB都有豐富的查詢語言。在MongoDB文件https://docs.mongodb.com/manual/reference/sql-comparison/?_ga=2.97293983.1414641971.1500188964-1583439788.1500188964  中可以找到一個完整的語句列表。

 

七、 為什麼要使用MongoDB而不是MySQL?

 

各種規模的組織企業都採用MongoDB,因為它能夠更快地構建應用程式,處理高度多樣化的資料型別,並更有效地管理應用程式。

簡化了開發,因為MongoDB文件自然對映到現代的面向物件程式語言。使用MongoDB可以避免將程式碼中的物件轉換為關係表的複雜物件關係對映(ORM)層。

MongoDB的靈活資料模型也意味著您的資料庫模式可以隨業務需求而發展。例如,在天氣頻道的MySQL資料庫中花費數週時間的模式更改可能會在短短几個小時內由MongoDB進行。MongoDB還可以在多個分散式資料中心之間進行擴充套件,提供以前MySQL等關係資料庫無法實現的新的可用性和可擴充套件性。隨著在資料量和吞吐量方面的增長,MongoDB可輕鬆擴充套件,無需停機,無需更改應用程式。相比之下,要實現與MySQL的規模往往需要大量的定製工程。百度從MySQL遷移到MongoDB,以支援其快速增長的業務。中國網際網路服務巨頭現在擁有超過100個應用程式,並使用MongoDB叢集管理超過1PB的資料。

 

八、 MongoDB場景使用場景?

 

MongoDB是用於各種用例的通用資料庫。 MongoDB最常見的用例包括單檢視,物聯網,移動,實時分析,個性化,目錄和內容管理。

 

九、 何時用MySQL比較合適

 

雖然大多數現代應用程式需要一個靈活的可擴充套件系統,如MongoDB,但是有一些關係資料庫(如MySQL)將更適合使用的情況。需要複雜的多行事務的應用程式(例如雙記錄bookkeep系統)將是很好的例子。 MongoDB不是圍繞關係資料模型和SQL構建的遺留應用程式的替代方法。

一個具體的例子是旅行預訂系統背後的預訂引擎,通常還涉及複雜的事務。雖然核心預訂引擎可能在MySQL上執行,但是與使用者互動的應用程式部分 - 提供內容,與社交網路整合,管理會話 - 將更好地放在MongoDB中

 

十、 MongoDB和MySQL能否一塊使用?

 

MongoDB和MySQL的混合部署有很多例子。在某些情況下,這是一個使用合適工具的的問題。例如,許多電子商務應用程式使用MongoDB和MySQL的組合。產品目錄包括具有不同屬性的多個產品,非常適合MongoDB的靈活資料模型。另一方面,需要複雜事務的結帳系統可能建立在MySQL或其他關係資料庫技術上。

在其他情況下,新的業務需求推動企業採用MongoDB作為其應用程式的下一代元件。例如,世界領先的業務管理軟體和服務供應商之一的Sage集團將MongoDB整合到其適用於中型企業的受歡迎的企業資源規劃(ERP)解決方案中。 Sage客戶現在享受更高程度的功能和個性化作為一體化的結果。雖然許多Sage產品最初建立在MySQL上並繼續執行,但最新的使用者體驗功能集中在MongoDB周圍。除了這幾個例外,我們認為,由於其靈活的資料模型和可擴充套件架構,MongoDB幾乎總是比MySQL更好的選擇。