您好,登錄后才能下訂單哦!
本篇文章為大家展示了MongoDB與MySQL哪個好,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
什么是MySQL / MariaDB?
MySQL AB的Monty Widenius和David Axmark最初于1994年開始開發MySQL。產品名稱中的“ My”是指Widenius的女兒,而不是英語單詞“ my”。MySQL旨在與mSQL(又名Mini)兼容。 SQL),并添加了SQL查詢層和開放源代碼許可(實際上是專有和GPL雙重許可)。MySQL的公共發行版于1996年底開始,并且每年或每兩年持續發行一次。MySQL是當前最受歡迎的關系數據庫。
Sun Microsystems于2008年以10億美元的價格收購了MySQL AB,Oracle于2010年收購了Sun。在Oracle收購MySQL的廣泛關注中,Widenius在收購Oracle之前就將MySQL 5.5合并到了MariaDB中。MariaDB努力維護與Oracle MySQL版本的兼容性。
與功能更強大的商業關系數據庫(例如Oracle數據庫,IBM DB / 2和Microsoft SQL Server)相比,MySQL最初是一個相當低端的關系數據庫,盡管它足以成為動態網站的后備存儲。多年來,它增加了您希望從關系數據庫獲得的大多數功能,包括事務,參照完整性約束,存儲過程,游標,全文索引和搜索,地理索引和搜索以及群集。
盡管MySQL現在支持“大數據庫”功能,例如主從部署,與Memcached一起使用以及水平分片,但它仍通常用于中小型部署。將MySQL擴展到多個從屬服務器可以提高讀取性能,但是只有主服務器才能接受寫請求。
AWS提供了兩種形式的MySQL即服務,即Amazon RDS和Amazon Aurora。后者具有更高的性能,可以處理TB級的數據,更新副本的延遲時間更短,并且可以直接與Oracle數據庫和SQL Server競爭。
什么是MongoDB?
MongoDB是高度可伸縮的操作文檔數據庫,可在開源版本和商業企業版本中使用,它可以在本地運行或作為托管云服務運行。托管云服務稱為MongoDB Atlas。
MongoDB無疑是NoSQL數據庫中最受歡迎的數據庫。它的文檔數據模型為開發人員提供了極大的靈活性,而其分布式體系結構則提供了很好的可伸縮性。因此,通常選擇MongoDB用于必須管理大量數據,得益于水平可伸縮性并處理不適合關系模型的數據結構的應用程序。
MongoDB是一個基于文檔的存儲,在其之上還具有一個基于圖形的存儲。MongoDB實際上并不存儲JSON:它存儲BSON(二進制JSON),該擴展了JSON表示(字符串)以包括其他類型,例如int,long,date,浮點,decimal128和地理空間坐標。
MongoDB可以使用數據的類型生成正確的索引類型,從而在數據的單個副本上生成多模式圖形,地理空間,B樹和全文本索引。MongoDB使您可以在任何文檔字段上創建索引。MongoDB 4具有多文檔事務,這意味著即使必須標準化數據設計,您仍然可以獲得ACID屬性。
默認情況下,MongoDB使用動態模式,有時稱為無模式。單個集合中的文檔不需要具有相同的字段集,并且字段的數據類型可以在集合中的不同文檔之間有所不同。您可以隨時使用動態模式更改文檔結構。
但是,可以使用架構治理。從MongoDB 3.6開始,MongoDB支持JSON模式驗證,您可以在驗證器表達式中將其打開。
LAMP和MEAN堆棧
在LAMP和MEAN堆棧上存在很多變化。例如,您可以在Windows(WAMP)或MacOS(MAMP)上運行而不是Linux OS。您可以運行IIS(WIMP),而不是Windows上的Apache Web服務器。
您可以運行PostgreSQL或SQL Server,而不是LAMP堆棧中的MySQL關系數據庫。如果您需要全球分布,則可以運行CockroachDB或Google Cloud Spanner。可以使用Perl或Python代替PHP語言。如果要使用Java或C#進行編碼,則需要考慮單獨的堆棧系列。
您可以運行Couchbase或Azure Cosmos DB以獲得更好的全局分布,而不是MEAN堆棧中的MongoDB文檔數據庫。可以使用十二個Node.js Web服務器框架中的任何一個來代替Express 。除了AngularJS前端框架,您還可以運行Angular 2或React。
如何為您的應用程序選擇數據庫
選擇數據庫時要問的最重要的問題是:
您希望在應用程序成熟時存儲多少數據?
您希望在高峰負載下同時處理多少個用戶?
您的應用程序需要什么可用性,可伸縮性,延遲,吞吐量和數據一致性?
您的數據庫架構多久更改一次?
您的用戶群體的地理分布是什么?
您的數據的自然“形狀”是什么?
您的應用程序需要在線事務處理(OLTP),分析查詢(OLAP)還是同時需要兩者?
您期望生產中的讀寫比例是多少?
您需要地理查詢和/或全文查詢嗎?
您首選的編程語言是什么?
你有預算嗎?如果是這樣,它將涵蓋許可和支持合同嗎?
這些問題中的幾個會趨于縮小數據庫的選擇范圍,但是與制定LAMP堆棧時相比,我們有更多選擇。如果您要構建一個應用程序,并且該應用程序必須在99.999%的時間內對全世界的用戶都具有高度的一致性,那么只有少數幾個數據庫適合您。如果您的應用程序將在工作日的上午9點至下午6點在一個國家/地區使用,并且可以容忍最終的一致性,那么幾乎所有數據庫都可以使用,盡管某些數據庫對于開發人員和操作員而言更容易,而某些數據庫則可以為您的主要使用場景提供更好的性能。
雖然LAMP和MEAN堆棧一次是Web應用程序的良好解決方案,但現在都不是最佳選擇。而不是盲目采用任何一種,您應該仔細考慮用例,并找到一種可在可預見的將來為您的應用程序服務的體系結構。
SQL還是NoSQL?
您什么時候需要關系數據庫(例如MySQL)用于新應用程序?除了對標準SQL的明顯支持外,關系數據庫本身將數據強制為具有一致的強類型字段的表格模式,并且只要您利用規范化就可以幫助您避免數據重復。
如果需要避免丟失數據,則可以NOT NULL在創建或修改表時聲明字段。如果您需要由開放地理空間聯盟定義的地理查詢,則大多數關系數據庫都將提供可靠的實現。而且,如果您需要全文搜索,則大多數關系數據庫都允許您在文本字段上定義倒排列表索引,FULLTEXT在MySQL中稱為索引。
另一方面,如果您還需要偶爾的自由格式文檔,則MySQL和許多其他關系數據庫也支持RFC 7159定義的JSON數據。如果您還想使用XML文檔和XPath或XSLT,則大多數關系數據庫都可以提供這種能力。
您何時需要像MongoDB這樣的文檔數據庫?如果您的主要用例需要允許使用自由格式的數據,在文檔之間更改類型的字段,隨時間變化的架構或嵌套的文檔,則NoSQL數據庫將滿足要求。另外,如果您的應用程序是用JavaScript編寫的,那么文檔數據庫的JSON格式將很自然。
上述內容就是MongoDB與MySQL哪個好,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。