1. 程式人生 > >在構建社交網站中,MySQL 和 MongoDB優缺點大比拼

在構建社交網站中,MySQL 和 MongoDB優缺點大比拼

在專案的規劃和發展過程中,最關鍵的一步是要選擇合適的資料庫。如果選擇錯誤的話,將會花費你大量時間和金錢,並且在這過程中還會惹毛很多的客戶。當在他們預期方式中使用時,MongoDB和MySQL都是非常優秀的資料庫,但究竟哪個才是構建社交網路最好的資料庫呢?

MongoDB是什麼?

MongoDB是一個NoSQL資料庫,這意味著相關資料儲存在單個檔案的快速檢索。這通常是一個很好的模型,資料不需要在多個文件中複製(這可能導致不一致)。

(圖)

一個MongoDB文件的例子。來源:MongoDB

MongoDB在這種情況下易於擴充套件,所以資料庫可以快速水平增長,同時能自動保持事物井然有序。當你有大量的資料時,同時需要快速響應時間,選擇MongoDB可能會特別好。

MySQL是什麼?

MySQL是一個關係資料庫,這意味著資料儲存(最好)在標準化的表中,所以沒有重複。當你始終需要一致的和可靠的資料時(如個人資訊或財務資料),選擇MySQL是一個很好的模型。

圖片描述

一個MySQL表的示例。來源:MySQL

而水平擴充套件可就難多了,它堅持ACID模型(原子性、一致性、隔離、耐久性),這意味著你可以更少擔心資料的可靠性。

社交網路是如何工作的呢?

社交網路為人們提供不同的連線方式。無論是通過相互的友誼,業務夥伴,或著名的人或業務的更新,在社交網路上獲取資訊有許多的方法。

連線的關鍵因素是:對於任何一個使用者連線或跟隨,該人通常會看到從所有這些連線到系統登入的更新。

圖片描述

資料庫的比較

鑑於社會資料有不同的關係,尤其是使用者,隨著時間的推移,它作用於更好的關係資料庫。儘管NoSQL的解決方案如MongoDB看起來像是快速檢索大量資料的好方法,然而使用者在社交網路關係性質上可能會導致許多重複發生。

這樣重複資料隨著時間推移本身會變得不一致和/或不可靠,或如果重複刪除,查詢會變得更加難以處理(因為文件可能需要指向其他文件,這不是最佳的NoSQL資料庫)。

因此,MySQL是更好的推薦,因為它有資料的可靠性和關係工具來處理互動和眾多使用者之間的關係。你也可以利用MySQL和MongoDB兩個資料庫的最佳特性,將它們一起使用。