MongoDB – 使用模式構建之屬性模式

簡單描述:
直接進入瞭解屬性模式。它特別適合如下的狀況:數據結構

  1. 有一個大的文檔,可是它其實擁有一些類似的字段,並且這些字段的一個子集具備相同的特徵,最後其實須要對這些子集字段進行排序或者查詢;
  2. 實際上也不是全部文檔都會出現須要的排序字段;
  3. 或者上述兩個條件均知足

事實上考慮到性能方面的緣由,爲了優化搜索可能須要許多索引才能照顧到這些子集。可是建立越多的索引也只會致使性能的降低。屬性模式爲這種狀況提供了一個很好的解決方案。性能

實例:
一個訂單數據文檔,實際上是有不少須要記錄的時間,好比建立時間,支付時間,發貨時間等等。在設計數據結構的時候固然第一時間就會想到如圖:優化

直接結構設計

實際上這種設計在時間類型比較少的狀況下是沒有太大問題,可是結合了實際業務場景,一張訂單的時間固然不會太少,有時候爲了優化排序,不得不創建相應的因此,如今問題就來的,根據這麼多字段逐個創建索引那可能創建不少,這樣反而會下降總體查詢的性能。那麼這時候使用屬性模式就很合適了。以下圖:spa

屬性模式結構設計

若是訂單數據結構考慮使用了這種模式後,就不須要反覆爲類似的字段子集創建索引,大大提升查詢效率。設計

結論:
屬性模式針對每一個文檔中許多相似字段提供了更簡單的文檔索引。經過將這個數據子集移動到一個鍵值子文檔中,咱們可使用不肯定的字段名,爲信息添加額外的限定符,並更清楚地說明原始字段和值的關係。當咱們使用屬性模式時,因爲須要的索引更少,查詢變得更簡單更快。排序

相關文章
相關標籤/搜索