婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解MongoDB范圍片鍵和哈希片鍵

詳解MongoDB范圍片鍵和哈希片鍵

熱門標簽:智能外呼系統官網 河南電話外呼系統招商 內蒙古營銷智能外呼系統哪個好 青白江400企業電話申請 長沙電銷外呼防封卡是什么 呼和浩特外呼系統原理是什么 crm外呼系統聯系方式 外呼線路資源屬于電信業務嗎 小裙科技電銷機器人怎樣

01 片鍵

    MongoDB的片鍵決定了集合中存儲的數據在集合中的分布情況,具體的方法是使用片鍵值的范圍來對集合中的數據進行分區。舉個例子:

假如我們以年齡age來作為片鍵,那么age的范圍理論上是0~80,此時,MongoDB會為我們定義age的四個范圍區間,他們分別是:0~20,20~40,40~60,60~80,每個范圍都是一個chunk,這樣我們寫入數據之后,數據里面的數據塊就有:

chunk1:  age  0~20

chunk2:  age  20~40   

chunk3:age  40~60

chunk4:age  60~80

需要注意的是,在一個集合中,被選為片鍵的這個字段上必須有一個支持片鍵的索引,或者是必須有一個以這個字段開頭的聯合索引。

通常情況下,我們給字段添加的索引,最常見的是普通索引或者哈希索引,

普通的索引字段如果作為片鍵,那么這個片鍵我們稱為范圍片鍵;

哈希索引字段如果作為片鍵,那么這個片鍵我們稱為哈希片鍵。

下面我們來看二者的不同之處:

02 范圍片鍵(遞增片鍵)

范圍片鍵,顧名思義,就是將數據根據片鍵劃分到連續的范圍里面,在這個模型中,那些值"相似"的文檔可能位于同一個片中。例如下面這樣:

這中分片方式是MongoDB默認的分片方式,它有好處也有壞處。

好處:

    可以高效的讀取連續范圍內的目標文檔。如果你使用范圍查詢,則可以比較快速的拿到所有的結果值。因為數據所在的數據chunk比較少。

壞處:

    如果我們寫入的數據都幾種在某一個分片區間,那么讀寫性能都可能因為片鍵劃分不均勻而降低。(例如下圖中,數據的基數大部分在20~maxKey,則大部分都在chunk C的位置,本身分布不均勻),Chunk C的寫入壓力將會增大。

在下列場景中,使用范圍片鍵比較合適:

1、數據的基數比較大

2、分片的寫入頻率比較低(插入較少不容易產生chunk的搬運)

3、非單調變化的分片(如果單調寫,則會分到同一個塊里面,容易達到chunk割裂的條件,產生chunk的搬運)

如果數據滿足上面的三個條件,則我們寫入的數據可能是這樣的:

就是比較均勻的寫入到了數據塊中。

03 哈希片鍵

    哈希片鍵使用哈希索引在共享集群中對數據進行分區。哈希索引計算單個字段的哈希值作為索引值,該值用作片鍵(注意,這里并不是字段本身的值,而是hash之后的值)。

    使用哈希索引,我們寫入數據之后,對應寫入數據塊的圖示可能如下:

從圖中我們看出來,雖然我們輸入的x值比較接近,分別是25、26、27,但是,經過hash函數之后,他們所在的數據塊序號可能差距很遠。

哈希分片在分片集群中提供了更均勻的數據分布,集合中那些具有近似值的文檔,可能會被分到不同的塊上,mongos更有可能執行廣播操作來完成給定的范圍查詢。

哈希值得計算,是由MongoDB來負責的,不是應用程序負責的

作為哈希片鍵的索引字段應該有如下特點:

1、具有大量不同的值

2、哈希索引適合單調變化的字段,例如自增值,時間值等(因為可以將單調的字段通過hash函數映射到不同的塊上去,從而分散寫入壓力,例如下圖,雖然數據連續,但是寫入了不同的數據塊中)

它的缺點也比較明顯,當我們查詢某個范圍的值的時候,hash索引會查找更多的數據分片,并將最終的結果匯總起來交給我們。

在實際生產環境中,我們需要結合自己的需求來確定使用哪種類型的片鍵,再次強調,在設定某個字段作為片鍵之前,需要先在當前字段創建對應類型的索引,或者創建一個以當前字段開頭的聯合索引。否則設定片鍵的語句會報錯。

下面是分片創建從無到有的過程舉例:

1、創建表,只有一個字段name,并插入數據
mongos> use aaa
switched to db aaa
mongos> db.aaa.insert({name:1})
WriteResult({ "nInserted" : 1 })
mongos> db.aaa.insert({name:2})
WriteResult({ "nInserted" : 1 })
mongos> db.aaa.insert({name:3})
WriteResult({ "nInserted" : 1 })
mongos> db.aaa.insert({name:4})
WriteResult({ "nInserted" : 1 })
mongos> 

2、查看數據
mongos> db.aaa.find()
{ "_id" : ObjectId("5fdb7d54d91f2f9bae3b09a1"), "name" : 1 }
{ "_id" : ObjectId("5fdb7d56d91f2f9bae3b09a2"), "name" : 2 }
{ "_id" : ObjectId("5fdb7d59d91f2f9bae3b09a3"), "name" : 3 }
{ "_id" : ObjectId("5fdb7d5cd91f2f9bae3b09a4"), "name" : 4 }

3、允許數據庫分片
mongos> sh.enableSharding("aaa")
{
 "ok" : 1,
 "operationTime" : Timestamp(1608220038, 3),
 "$clusterTime" : {
  "clusterTime" : Timestamp(1608220038, 3),
  "signature" : {
   "hash" : BinData(0,"shemm3xvSYrMiy9t7gSYcVtFUuE="),
   "keyId" : NumberLong("6894922308364795934")
  }
 }
}
mongos> 

4、在name字段創建hash索引
mongos> db.aaa.createIndex({name:"hashed"},{background:true})
{
 "raw" : {
  "sharding_yeyz/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020" : {
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
  }
 },
 "ok" : 1,
 "operationTime" : Timestamp(1608220115, 3),
 "$clusterTime" : {
  "clusterTime" : Timestamp(1608220115, 3),
  "signature" : {
   "hash" : BinData(0,"S3Wz9G26eJyOcwa1OLS6TVYu6SE="),
   "keyId" : NumberLong("6894922308364795934")
  }
 }
}

5、以name字段作為片鍵創建哈希分片
mongos> sh.shardCollection("aaa.aaa",{name:"hashed"})
{
 "collectionsharded" : "aaa.aaa",
 "collectionUUID" : UUID("20a3895e-d821-43ae-9d28-305e6ae03bbc"),
 "ok" : 1,
 "operationTime" : Timestamp(1608220238, 10),
 "$clusterTime" : {
  "clusterTime" : Timestamp(1608220238, 10),
  "signature" : {
   "hash" : BinData(0,"qeQlD3jsSvRZkyamEa2hjbezEdM="),
   "keyId" : NumberLong("6894922308364795934")
  }
 }
}

6、查看分片信息
mongos> db.printShardingStatus()
--- Sharding Status --- 
 sharding version: {
 "_id" : 1,
 "minCompatibleVersion" : 5,
 "currentVersion" : 6,
 "clusterId" : ObjectId("5fafaf4f5785d9965548f687")
 }
 shards:
 { "_id" : "sharding_yeyz", "host" : "sharding_yeyz/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020", "state" : 1 }
 { "_id" : "sharding_yeyz1", "host" : "sharding_yeyz1/127.0.0.1:27024,127.0.0.1:27025,127.0.0.1:27026", "state" : 1 }
 active mongoses:
 "4.0.6" : 1
 autosplit:
 Currently enabled: yes
 balancer:
 Currently enabled: yes
 Currently running: no
 Failed balancer rounds in last 5 attempts: 2
 Last reported error: Could not find host matching read preference { mode: "primary" } for set sharding_yeyz
 Time of Reported error: Wed Nov 18 2020 17:08:14 GMT+0800 (CST)
 Migration Results for the last 24 hours: 
  No recent migrations
 databases:
 { "_id" : "aaa", "primary" : "sharding_yeyz", "partitioned" : true, "version" : { "uuid" : UUID("26e55931-d1c1-4dc5-8a03-b5b0e70f6f43"), "lastMod" : 1 } }
  aaa.aaa
   shard key: { "name" : "hashed" }
   unique: false
   balancing: true
   chunks:
    sharding_yeyz 1
   { "name" : { "$minKey" : 1 } } -->> { "name" : { "$maxKey" : 1 } } on : sharding_yeyz Timestamp(1, 0)

以上就是詳解MongoDB范圍片鍵和哈希片鍵的詳細內容,更多關于MongoDB范圍片鍵和哈希片鍵的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • MongoDB分片鍵的選擇和案例實例詳解

標簽:楚雄 舟山 呼倫貝爾 白山 安順 池州 菏澤 黃石

巨人網絡通訊聲明:本文標題《詳解MongoDB范圍片鍵和哈希片鍵》,本文關鍵詞  詳解,MongoDB,范圍,片鍵,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解MongoDB范圍片鍵和哈希片鍵》相關的同類信息!
  • 本頁收集關于詳解MongoDB范圍片鍵和哈希片鍵的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲高清不卡在线| 五月开心婷婷久久| 91精品麻豆日日躁夜夜躁| 日韩一区二区三区电影在线观看 | 欧美日韩免费一区二区三区| 色吧成人激情小说| 911精品产国品一二三产区| 精品少妇一区二区三区 | 秋霞国产午夜精品免费视频| 国产精品亚洲人在线观看| 99在线精品观看| 欧洲精品在线观看| www成人在线观看| 亚洲精品欧美在线| 韩国v欧美v日本v亚洲v| 色综合久久88色综合天天免费| 欧美人伦禁忌dvd放荡欲情| 久久精品免视看| 亚洲在线成人精品| 国产电影一区二区三区| 欧美久久久一区| 国产欧美日韩不卡免费| 午夜精品123| 99久久国产免费看| 日韩欧美国产一区在线观看| 亚洲精品国产视频| 国产经典欧美精品| 日韩午夜在线观看| 亚洲一区二区三区四区五区中文| 国产九九视频一区二区三区| 色综合久久88色综合天天免费| 精品成a人在线观看| 亚洲自拍偷拍网站| av激情亚洲男人天堂| 欧美一区二区二区| 亚洲精品视频在线观看免费| 久久国产综合精品| 欧美日韩亚洲综合一区| 成人欧美一区二区三区视频网页| 美女在线视频一区| 欧美日韩三级视频| 一个色妞综合视频在线观看| 国产一区二区三区在线观看精品 | 色综合久久久久综合99| 中文文精品字幕一区二区| 日韩高清在线观看| 欧美日韩精品欧美日韩精品| 亚洲欧洲制服丝袜| 成人a级免费电影| 亚洲国产精品传媒在线观看| 精品一区二区在线视频| 69堂成人精品免费视频| 亚洲高清不卡在线| 3d成人h动漫网站入口| 亚洲国产美国国产综合一区二区| 91视频观看视频| 亚洲美女免费视频| 欧美日韩日本视频| 日韩黄色在线观看| 日韩欧美一区二区久久婷婷| 日本伊人色综合网| 欧美变态tickle挠乳网站| 免费在线观看视频一区| 69堂成人精品免费视频| 精品一区二区在线视频| 久久久噜噜噜久噜久久综合| 国产一区二区三区久久久 | 蜜桃av一区二区| 91麻豆精品国产自产在线| 亚洲第一福利视频在线| 欧美一级一区二区| 精品一二三四区| 久久久久国产精品麻豆ai换脸| 日韩精品电影一区亚洲| 日韩视频免费观看高清完整版在线观看| 亚洲一本大道在线| 欧美高清一级片在线| 久久电影国产免费久久电影| 久久久噜噜噜久久中文字幕色伊伊| 国产91精品露脸国语对白| 国产免费观看久久| 色综合咪咪久久| 日韩一区二区麻豆国产| 国产真实乱偷精品视频免| 国产麻豆成人传媒免费观看| 成人精品视频.| 色综合天天综合给合国产| 免费精品99久久国产综合精品| 久久精品亚洲一区二区三区浴池| 亚洲国产欧美日韩另类综合| 日日摸夜夜添夜夜添精品视频| 国产拍欧美日韩视频二区| 欧美日韩夫妻久久| 亚洲日本va午夜在线电影| 一区二区三区四区五区视频在线观看| 色一情一乱一乱一91av| 日韩va欧美va亚洲va久久| 精品第一国产综合精品aⅴ| 成人一区二区在线观看| 亚洲欧洲制服丝袜| 欧美电影一区二区三区| 国产一区二区按摩在线观看| 亚洲色图清纯唯美| 日韩写真欧美这视频| 国产婷婷色一区二区三区| 久久国产综合精品| 久久电影网电视剧免费观看| 在线看一区二区| 最新国产の精品合集bt伙计| 午夜视频久久久久久| 在线视频国内自拍亚洲视频| 欧美国产欧美综合| 欧美视频一区二区三区四区 | 亚洲国产成人av网| 久久久欧美精品sm网站| 欧美综合色免费| 国产自产高清不卡| 久久国产精品72免费观看| 26uuu亚洲综合色欧美| 91蝌蚪porny| 国产精品一区二区果冻传媒| 精品国产一区二区三区av性色 | 国产精品水嫩水嫩| 91精品国产aⅴ一区二区| 91丝袜国产在线播放| 激情欧美日韩一区二区| 亚洲午夜电影在线观看| 国产亚洲欧美中文| 欧美精品成人一区二区三区四区| 99re这里只有精品6| 岛国精品在线观看| 国产一区二区三区最好精华液| 蜜臀久久99精品久久久画质超高清 | 日韩在线播放一区二区| 亚洲欧美成aⅴ人在线观看| 亚洲日本va午夜在线影院| 国产亚洲人成网站| 国产欧美日韩精品a在线观看| 欧美大白屁股肥臀xxxxxx| 欧美影院一区二区| 日韩一区二区视频| 国产精品综合av一区二区国产馆| 综合久久久久综合| 有码一区二区三区| 一区二区三区免费| 精品视频一区二区不卡| 91福利国产成人精品照片| 亚洲不卡av一区二区三区| 一区二区三区在线观看动漫| 综合分类小说区另类春色亚洲小说欧美| 欧美精品一二三| 成人性色生活片免费看爆迷你毛片| www.66久久| 中文字幕精品一区二区精品绿巨人 | 99久久99久久综合| 久久久午夜电影| 国产一区二区三区四区五区美女| 日韩欧美一二三区| 亚洲一区二区三区激情| 国产在线国偷精品产拍免费yy| 欧美日韩精品是欧美日韩精品| 国产女人18水真多18精品一级做| 久久久久久免费网| 国产精品久久久久一区二区三区 | 国产精品免费视频网站| 日韩在线播放一区二区| 成人一级视频在线观看| 欧美成人女星排行榜| 一区二区三区四区不卡在线| 精品一区二区三区香蕉蜜桃 | 欧美亚洲另类激情小说| 中文字幕欧美国产| 91论坛在线播放| 欧美国产一区在线| 972aa.com艺术欧美| 欧美精品一区二区三区视频| 五月综合激情婷婷六月色窝| 国产成人av一区二区三区在线观看| 日韩欧美国产三级| 精品亚洲免费视频| 中文字幕av在线一区二区三区| 国产在线精品一区在线观看麻豆| 国产欧美一区二区精品性色 | 中文字幕亚洲区| 91精彩视频在线| 99综合电影在线视频| 一区二区三区中文在线| 一本久道中文字幕精品亚洲嫩 | 欧美天堂一区二区三区| 欧美优质美女网站| 欧美国产日韩一二三区| 成人黄色国产精品网站大全在线免费观看| 国产福利91精品| 日韩黄色片在线观看| 日韩三级视频在线看| 椎名由奈av一区二区三区| 日韩欧美成人午夜| 色综合色综合色综合| 美腿丝袜亚洲一区| 国产精品国产自产拍高清av|