跳至主要内容

效能、容錯性、布署

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 官方文件