MongoDB 資料建模設計

一場 2 小時的 workshop,主題是 data modeling design,也就是平時常說的 schema design,聚焦在 MongoDB 比較獨特的設計思路。 講師:ChunYuan Jia(MongoDB Senior Consulting Engineer)。適合已有 MongoDB 開發經驗的同學。

這是本系列筆記的入口。整場依投影片 §Recap 分成六大主題,建議依序閱讀:

導覽

  1. 01 MongoDB 介紹 — document model、為什麼是 MongoDB、BSON、術語對照(Collection / Document / Field / Namespace)
  2. 02 關聯模型 Linking Models — 一對一、一對多、多對多在 MongoDB 怎麼表達;link vs embed 的四種寫法
  3. 03 Payload 與 Process 欄位 — 兩類欄位的分野;XML 存取的實戰範例
  4. 04 文件設計基礎 — schema 定義在 application 層;三大考量;link 或 embed 的決策問題
  5. 05 索引與優化 — index 原理、explain plan、各種 index 型別、ESR 法則、TTL、index 上限與取捨
  6. 06 設計模式 Design Patterns — Attribute / Bucket / Computed / Versioning / Subset / Outlier 六大模式與反模式

一句話總綱

MongoDB 的 schema design 核心是**「以應用需求出發,而不是從資料的抽象結構出發」**——先問應用怎麼讀、怎麼寫,再決定資料怎麼擺(04 文件設計基礎)。整場的兩條主線:

課末練習

講師最後留了一個開放練習:設計一個 Twitter 風格社群網路(users 有 followers、發 posts、看追蹤者的貼文)。要回答:有哪些 collection、何時/如何更新、有哪些 edge case、如何追蹤 follower 數、如何保持高效。可拿來套用六大模式練手。