MongoDB 與 MySQL,你選擇誰?
過去幾年,使用NoSQL資料庫的網站和應用數量激增。 MongoDB無處不在。 現代網路如何偏離傳統的基於SQL的資料庫確實令人著迷。 MongoDB和其他NoSQL資料庫在儲存和檢索資料方面有一種新方法。 那麼讓我們來看看MongoDB與MySQL不同的一些關鍵因素。
資料建模
使用像MySQL這樣的傳統SQL資料庫,我們需要一個固定的資料結構。 我們希望知道將記錄哪些不同型別的資料。 我們必須事先建立資料庫,必需的表,列,甚至為每列指定資料型別。 MongoDB不是這種情況。 使用MongoDB,開發人員可以稍微悠閒一點。 忘記表和資料型別,甚至不需要建立資料庫。 MongoDB會自動為您完成大部分初始繁重工作。
MongoDB致力於集合的思想。 這些集合類似於表,但沒有任何固定數量的列。 因此,集合中的每個文件(文件是行/記錄的MySQL等價物)可以具有不同的結構。 它們可能具有相同數量的欄位,也可能不具有相同數量的欄位(欄位是MySQL的等效列)。 因此可以說MySQL具有固定模式,而MongoDB具有靈活的模式。
搜尋資料
在MySQL中搜索資料庫中的資料可能是一項非常簡單的任務。我們支援諸如可以幫助組合來自多個表的資料的連線之類的東西。但這再次要求您非常瞭解您的資料模型。像外來鍵這樣的概念允許您在不同資料集之間建立關係。這有助於保持資料完整性。
由於其靈活的架構,MongoDB在搜尋資料方面有著截然不同的方法。搜尋資料非常有限,因為Mongo中沒有聯接。由於允許巢狀,因此您需要在一個文件中放置所需的任何資料。這是真正困擾在mongo上工作的新開發人員的事情之一。總的來說,我會說SQL在搜尋資料方面非常豐富而且MongoDB非常有限。
約束和資料完整性
由於您必須使用SQL預定義資料模型,因此無需擔心完整性。資料庫不接受任何不符合標準的資料型別。像外來鍵,主鍵和唯一索引這樣的約束會讓開發人員感到很麻煩。
另一方面,儘管MongoDB落後了。它確實提供了幾種型別的基於完整性的索引,包括唯一索引,但是資料型別沒有約束。它完全被理解,因為這些領域本身並沒有固定。因此,非常常見的是,ORM(物件關係對映器)經常與MongoDB一起使用。它們用於對伺服器端程式碼執行完整性檢查。總而言之,SQL是非常嚴格且豐富的資料完整性,而MongoDB則不然。
擴充套件
每個成功的應用程式都需要在某個時候擴充套件。當用戶數量增長時,需要多個伺服器。這是能夠擴充套件的因素。傳統上,SQL資料庫是為垂直擴充套件而構建的,即通過增加同一臺機器上的硬體進行擴充套件。如果該伺服器由於某種原因崩潰,這將導致麻煩。
另一方面,MongoDB是為了水平擴充套件而構建的。您可以設定多個節點,這些節點將自動複製,沒有單點故障。雖然MySQL已經看到了MySQL Cluster的巨大改進,但它仍然無法與MongoDB相媲美。在擴充套件方面,MongoDB的效能遠遠優於MySQL。
結論
MongoDB和MySQL有兩個完全不同的資料庫系統。在資料庫方面,MySQL一直是並且仍然是許多人的預設選擇。但是,我們看到變化和,更多的人們選擇MongoDB。
MongoDB比MySQL更能滿足現代應用程式的需求但MySQL在處理關係資料方面具有更好的優勢。在一天結束時,這只是你想要做的事情。這兩個選項都非常可靠,並且被網際網路上的一些大公司使用。我希望我已經明確了MySQL和MongoDB之間的主要區別。如果您仍有疑問,請將其放在評論部分,我會在那裡為您服務。
MongoDB比MySQL更好地滿足了現代應用程式的需求,但MySQL在處理關係資料方面有更好的優勢。說到底,這只是你想做什麼的問題。這兩種選擇都相當可靠,一些網際網路上最大的公司也在使用它們。我希望我已經明確了MySQL和MongoDB之間的主要區別。如果你仍然有疑問,請在評論框裡暢所欲言吧。
Linux公社的RSS地址 : ofollow,noindex" target="_blank">https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址: https://www.linuxidc.com/Linux/2018-10/155033.htm