MongoDB Advanced Schema Design Pattern - Subset Pattern
用一句簡單的話說
只儲存子集合資料(如最近幾筆),幫助我們減小整體、經常被 fetch 的 document 大小。
場景
Book 裡的 review 只顯示前三筆,但某一本書的 review 有上萬筆,影響了讀取的效能,這時可以考慮 Subset Pattern
- 確保 Book 的 review 只存取前三筆
- 另外開一個 collection 儲存 review documents,裡面可以有成千上萬個 review documents ,但其中只有三個 review 會與 book collection 裡的 review 重複
需要額外管理 duplicate data 如何被同步更新,但因為 review 不是很常被改變,我們願意冒這個風險來讓 book 的 document size 大幅減少
需要兩個 pipeline 流程
- 將原本的 books 裡的 review value 備份到另一個 collection
[ |
- 確保 books 裡的 review 數量不超過三筆
const update_review_array_pipeline = [ |
這樣一來就完成了 subset pattern 的實踐。