添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Toyota、Bosch、EA Games 等國際知名企業都是 MongoDB 的使用者, MongoDB 為什麼深受企業的愛戴?有什麼使用上的優點?在上篇 MongoDB-最受歡迎的 NOSQL 資料庫 的介紹中,我們詳細講解了 MongoDB 的產品性能以及優點。這篇文章則會介紹 MongoDB 的基本觀念、合適使用情境以及相較於 MySQL ,MongoDB 的優勢。

什麼是 MongoDB  ?

MongoDB 是一種開源的 NoSQL 文件資料庫,由於使用 JSON 文檔資料儲存結構,MongoDB 具有靈活、易於擴展、高效能這三種優勢。相較於傳統的關聯式資料庫,用戶在使用 MongoDB 儲存資料時,無需事先定義資料架構,並且能夠自由地增加資料的 Key/Value 。因此企業在處理巨量資料時,能夠花更少的時間,而且透過 MongoDB 允許資料格式不一致的特性,開發者也能夠輕鬆地處理資料架構不穩定的問題。

試想,一間企業每天有大量的資料需處理,這些資料涵蓋的範圍從客戶資訊到公司的銷售資料應有盡有。每一種資料也有不同的特徵,如果使用傳統的 RDBMS (關聯式資料庫),用戶就必須先定義資料的格式與架構,才能將資料儲存,然而,因為資料的種類繁多,如果每一筆資料都需要先定義才能存入,這樣效率會太過緩慢。因此透過 MongoDB 的半結構和非結構化的資料儲存特性,開發團隊能夠省下時間和減少工作量。


上圖 是資料庫、集結和文件之間的關係。MongoDB 內可以
有多個資料庫(Database),資料庫中包含多個集結(Collection),集結中則包含多個文件(Document)

在 MongoDB 中,_id 欄位是文件的主鍵(Primary Key),代表文件的唯一值。每個文件都會有一個獨特的 _id 值,用於確保集合內資料的一致性和準確性。

若使用者在創建新文件時沒有指派 _id 值,MongoDB 會自動為集合中的每個文件生成一個長度為 12 位元組的 _id 值。

自動生成 _id值能確保資料的唯一性,使得資料在集結內的檢索變得更加直接和可靠。

主機發生故障時, MongoDB 的副本集架構(Replica Set)能夠提供冗餘(Redundancy)和高可用性 (High Availability),每個副本集內部包含多台主機,其中一台為 Primary,其他台為 Secondary,多台機器之間的狀態及資料會自動同步,因此,當故障發生時,系統會在幾秒之內從 Secondary 中選出一台 Primary 接管工作,從而達到零停機 。然而,對 MySQL 來說,故障移轉的程序必須依靠手動完成,因此維運團隊需要無時無刻的保持警覺,就算主機在半夜發生故障,維運團隊還是必須起床修復。這不僅讓團隊無法好好休息,主機重新上線也需要耗費幾分鐘的時間。

(二)更快的開發時程

JSON 檔的本質是靈活的,每個文檔資料中的 Key Value 也不盡相同 。例如:產品目錄中,儲存男裝資料與儲存電視規格資料的 Key/Value 是不相同的。我們也稱這種現象為資料的「多型」。使用 JSON 文檔,我們能夠在無需更改資料庫架構的情況下,隨意增添資料的 Key Value。JSON 文檔這種對資料欄位沒有強制定義的特性,讓開發者能用最短的時間開發軟體系統。反觀 MySQL ,如果貿然更改 MySQL 內的資料結構,會造成資料庫的停機或主機資源的大量耗損。

(三)更方便的擴充

隨著資料量的增多,再優秀的資料庫都會面臨擴充的需求,利用 MongoDB 的分片功能,資料庫中的工作量會被分散至多台主機中。用戶只需根據自身的需求增加主機,而不用花費鉅額成本增添一台效能更好的主機系統,從而達到節省成本的目的。而且使用者在擴充 MongoDB 時,無需更改資料庫內的設定,以減少擴充的複雜度。然而,在擴充 MySQL 時,由於關聯式資料庫內寫入大量的 SQL Join,使用者必須調整資料庫內的所有程式碼、停機資料庫,同時必須小心地處理資料表格存放的節點。

(四)MongoDB 與 MySQL 的差異對照表

以下表格是 MongoDB 與 MySQL 之間的差別

MongoDB MySQL
資料類型 非結構化或半結構資料 結構化資料
資料表示方法 JSON 文檔 Row、Table
JOIN 支援 沒有
架構 不需定義 須將資料定義為表格和欄位
查詢語法 Javascript SQL

雖然 MongoDB 使用的術語和 MySQL 不同,但本質上是差不多的,差異可參考下方術語對照表 :

SQL 術語 MongoDB 術語 說明
database database 資料庫
table collection 資料表格/集合
row document 行/文檔
column field 資料欄位/域
index index 索引

MongoDB 是目前市面上最受歡迎的 NoSQL 資料庫,同時也是 NoSQL 資料庫領域中的領頭羊, MongoDB 提供企業更方便的資料儲存解決方案、提供工程師更友善的開發環境,也讓企業在不用花費鉅額成本的情況下,能夠選擇一個價格更低廉,效能良好的資料庫替代方案。歐立威科技是 MongoDB 的代理商,如果想要獲得更多資訊,歡迎與 我們聯繫