MongoDB 資料建模設計
一場 2 小時的 workshop,主題是 data modeling design,也就是平時常說的 schema design,聚焦在 MongoDB 比較獨特的設計思路。 講師:ChunYuan Jia(MongoDB Senior Consulting Engineer)。適合已有 MongoDB 開發經驗的同學。
這是本系列筆記的入口。整場依投影片 §Recap 分成六大主題,建議依序閱讀:
導覽
- 01 MongoDB 介紹 — document model、為什麼是 MongoDB、BSON、術語對照(Collection / Document / Field / Namespace)
- 02 關聯模型 Linking Models — 一對一、一對多、多對多在 MongoDB 怎麼表達;link vs embed 的四種寫法
- 03 Payload 與 Process 欄位 — 兩類欄位的分野;XML 存取的實戰範例
- 04 文件設計基礎 — schema 定義在 application 層;三大考量;link 或 embed 的決策問題
- 05 索引與優化 — index 原理、explain plan、各種 index 型別、ESR 法則、TTL、index 上限與取捨
- 06 設計模式 Design Patterns — Attribute / Bucket / Computed / Versioning / Subset / Outlier 六大模式與反模式
一句話總綱
MongoDB 的 schema design 核心是**「以應用需求出發,而不是從資料的抽象結構出發」**——先問應用怎麼讀、怎麼寫,再決定資料怎麼擺(04 文件設計基礎)。整場的兩條主線:
- 關聯怎麼處理:能 embed 就 embed,需要時才 link(02 關聯模型 Linking Models、04 文件設計基礎)。
- 效能怎麼保證:每個 query 都該用到 index,每個 index 都該被 query 用到(05 索引與優化)。
課末練習
講師最後留了一個開放練習:設計一個 Twitter 風格社群網路(users 有 followers、發 posts、看追蹤者的貼文)。要回答:有哪些 collection、何時/如何更新、有哪些 edge case、如何追蹤 follower 數、如何保持高效。可拿來套用六大模式練手。