MongoDB是什麼?MongoDB介紹及應用、架構、優點

MongoDB是什麼?

MongoDB 是一個開源的「NoSQL ( 非關聯性 ) 文件資料庫」,相較其他種類的  NoSQL 資料庫,文件資料庫(Document Database)的特色在於適合存取非結構資料,例如:HTML 網頁。

MongoDB功能?

MongoDB 內可有多個資料庫(Database),包含多個集結(Collection),集結包含多個文件(Document)。主要功能為提供 WEB 應用可擴充套件的高效能資料儲存解決方案,具有下列特點:

  • 支援查詢與完全索引

MongoDB 保留了關係數據即時查詢的能力,保留了索引內部物件的能力。
  • 支援雲端計算層次的擴充套件性

MongoDB 自身提供自動處理碎片的能力副本集能將數據分布在多台機器,可以提供自動故障轉移、擴展的能力。
  • 支援複製與故障恢復

MongoDB 提供了 Journaling 日誌的概念,日誌寫入紀錄,進程突然中斷的情况,可以保障數據不會錯誤,可以進行修復。

MongoDB語言支援?

MongoDB 官方的驅動:

C、C++、C#、Erlang、Haskell、Java、JavaScript、Lisp、fibjs、node.JS、Perl、PHP、Python、Ruby、Scala、Go。

非官方式的驅動:

ColdFusion、Delphi、 Erlang、Factor、Fantom、JVM languages、Lua、HTTP REST、Racket、Smalltalk。

MongoDB系統架構?

Standalone單機

Standalone 單機

Standalone 架構是最簡單的 MongoDB 架構,只有一個 MongoDB 的實體,只有一個資料庫存取資料。可獨立使用或維護複製集群或分片集群的單一節點。

Replica Set複製集

Replica Set 複製集群

三個對等的節點構成一個「複製集」集群,是 MongoDB 垂直擴展的最小單位。

在複製集架構(HA架構)下,Primary負責寫請求,Secondary負責讀請求,當Primary失效則策略性分離讀寫請求,讀取較近或快的副本,除了可以避免單點故障問題,也可分散讀取請求,提升讀取的效能。

Sharded Cluster 分片叢集

Sharded Cluster 分片集群

數據水平擴展的方法,分片集群可以將整個 collection 的數據分派到各節點,可分散寫入請求,提高寫入的效能。基本上 sharding 可以支撐數 TB 的數據,解決了 Replica Set 複製集群「集群數據容量」受限於單個節點的磁碟的擴充上的困難。

MongoDB相較MySQL的優點有哪些?

(一)不須先創立數據表格,且數據格式自由

MySQL 須創建表格讓 MySQL 抓取數據,而 MongoDB 不需事先創建表格,也能將數據直接寫入並彈性添加欄位,且欄位的格式較自由,例如:欄位使用數字或是字符串皆可。

(二)可以處理json結構

MongoDB 將資料儲存為文件(類似 JSON 物件),以 field-value 為結構成對儲存,value 可以包含值、文件、陣列、文件陣列,讀取欄位內的數值。

舉例來說:

欄位 a 的值為

{

        “a”: 11,

        “b”: 12,

        “c”: “abc”,

        “d”: [1,2,3]

}

可以直接去讀取或設置 a 欄位的 b 值 a.b,讀取 a 欄位 d 數組的第二個值:a.d.1,可以去刪除 a 欄位的 a 數據 $unset:{“a.a”: 1} ,就會變成:

{

        “b”: 12,

        “c”: “abc”,

        “d”: [1,2,3]

}

 

(三)查詢插入效率高

採用 MySQL 存儲,每次查詢需要使用外鍵查詢多個表,在新增數據時也一樣需要更新許多表格;而使用 MongoDB 儲存,只需要更新一條數據,就能同時更新在應對的嵌套文檔中內容。

MongoDB的應用?

MongoDB具有處理大量資料、加速開發速度、降低成本支出等特色,目前已經有900萬下載次數,使用者包括 Global 500,如 eBay、Cisco、MetLife、Adobe等等。

MongoDB可以高效能處理大數據,適用場景多元涵蓋CRM、內容管理等等。

MongoDB應用場景:

  • 網站即時數據(登/出入)

  • 快速存取

  • 大型、低價值檔案的儲存

  • 有擴充需求的資料儲存

  • 物件或 JSON 數據存儲

MongoDB不適用場景:

  • 高交易需求的系統,例如:銀行、會計系統

  • 商業智慧BI的應用

 

圖/文:簡安琪

立即訂閱電子報

掌握最新科技趨勢!