MongoDB Advanced Schema Design Pattern - Outlier Pattern

用一句簡單的話說

將極大或極小、不常見的資料獨立存放,以避免破壞平均 document 大小。

場景

想像一個場景,大部分的書 review 都不多所以設計成一個 array 放這些 review,但暢銷書的 review 多到會變成 unbounded array,這時就是 outlier pattern 使用場景

處理某些 document 的 edge cases,其他應用場景像是:

  1. e-commerce 的熱門商品
  2. social app 上有數千萬追蹤的網紅

處理流程:
  1. 標記 outlier
  2. 處理 outlier

使用 updateMany() 標記 outlier

db.reviews.updateMany(
{
"comments.3": { $exists: true }
},
{
$set: { outlier: true }
}
);

處理 outlier

處理方式因應你的 app 需求而定,例如可以在下次有 write operation 的時候辨識如果是 outlier 就將多出來的 comment 放到其他地方


常與 bucket pattern 混用。