跳至主要内容

效能、容錯性、布署

What Influences Performance?​

以下是影響 MongoDB 效能的因素

與開發者或資料庫管理者相關性高的因素​

  • Efficient Queries / Operations
  • Indexes
  • Fitting Data Schema

與資料庫管理者或系統管理者相關性高的因素​

  • Hardware & Network
  • Sharding(分片)
  • Replica Sets(複製集)

Understanding Capped Collections​

Capped Collections(固定集合)是資料容量或 Document 儲存量固定的 Collection,
可藉由 db.createCollection() 建立。
由於可儲存 Document 數量有上限,當 Capped Collection 已儲存的 Document 已達上限時,
若再插入 Document 則新資料會將最舊的 Document 逐筆覆蓋,
此一性質使得 Capped Collection 適合用於快取等情境。
以下列指令為例,line 1 會建立一個資料容量 10000 bytes、Document 上限 3 筆的 Collection。

$ db.createCollection("collection_name", {capped: true, size: 10000, max: 3})
$ db.collection_name.insertMany([{num: 1}, {num: 2}, {num: 3}])
$ db.collection_name.find()
$ db.collection_name.insertMany([{num: 4}, {num: 5}])
$ db.collection_name.find()

上述指令中,line 3 會取回三筆資料:

[
{ _id: ObjectId("64808e5984f4bfdd01ab9186"), num: 1 },
{ _id: ObjectId("64808e5984f4bfdd01ab9187"), num: 2 },
{ _id: ObjectId("64808e5984f4bfdd01ab9188"), num: 3 }
]

上述指令中,line 5 會取回三筆資料:

[
{ _id: ObjectId("64808e5984f4bfdd01ab9188"), num: 3 },
{ _id: ObjectId("64808f2784f4bfdd01ab9189"), num: 4 },
{ _id: ObjectId("64808f2784f4bfdd01ab918a"), num: 5 }
]

What are Replica Sets?​

用戶端(Shell、Driver)對 MongoDB Server 存取資料時,其實是在對 Server 的節點存取資料。
資料庫管理者可設置多個節點,使資料存取發生於主節點及次節點之間,
而主節點及次節點的集合就稱為 Replica Sets。

設置 Replica Sets 的優點是可使資料擁有備份,提升資料庫容錯率。
例如主節點若故障導致資料無法存取,MongoDB Server 會自動向次節點存取資料。
另一個優點是提升資料讀取效能。只要資料庫管理者設定得當,
即可將讀取請求自動分配給不同的節點,藉此提升讀取效能。

Replica Sets 與 Nodes 示意圖​

點擊下方連結可查閱更多關於 Replication 的圖文說明。

MongoDB 官方文件

Understanding Sharding​

Sharding(分塊)是資料庫水平擴展方案。有別於 Replication,Sharding 只是將資料分散儲存,
不會複製資料。資料庫分塊處理後,存取資料時可藉由 Shard Key 提升存取速度。
反之,若只將資料庫分塊而不妥善設定、使用 Shard Key,則存取資料時必須遍歷所有 Shard。

Sharding 示意圖​

點擊下方連結可查閱更多關於 Sharding 的圖文說明。

MongoDB 官方文件