天天看點

MongoDB-片鍵選擇技巧

如何選擇片鍵

使用分片的目的是為了将資料存儲到不同的伺服器上, 是以在選擇片鍵的時候,​

​應該選擇取值範圍更廣的字段作為片鍵​

​,因為如果取值範圍太小, 那麼劃分出來的資料段就太少, 那麼配置設定到不同伺服器的機率就越小, 例如:取值如果隻有 true 或 false, 那麼就隻能劃分出兩個資料段, 那麼也就最多隻能儲存到兩台伺服器上。

​應該選擇取值配置設定更平衡字段作為片鍵​

​,因為如果取值範圍不平衡, 就會導緻某一個資料段的資料太多, 某一台分片伺服器壓力太大, 例如: 将 age 作為片鍵, 但是我們的使用者 90% 都集中中 20~30 歲, 那麼就會導緻儲存 20~30 資料段的分片伺服器存儲資料過多壓力過大。

​不應該選擇單向增加或者減少的字段作為片鍵​

​, 因為如果取值是單向增加或者減少的, 那麼就會出現可能出現的最小值資料段或者最大值資料段儲存的資料過多, 對應的分片伺服器壓力過大。

片鍵選擇技巧

  • 如果片鍵字段取值範圍不夠廣, 那麼我們可以使用複合片鍵
  • 如果片鍵字段的取值不夠平衡, 那麼我們可以使用複合片鍵
  • 如果片鍵字段的取值是單向增加或減少的, 那麼我們可以使用片鍵字段的哈希值

繼續閱讀