日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongodb分片学习

發(fā)布時間:2023/12/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb分片学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分片

提高集群處理的性能,可同時提高應(yīng)用的讀寫性能

  • 輸入sh.status()命令會顯示當前分片的運行狀況, 此報告包括哪個分片是數(shù)據(jù)庫的主分片以及分片中的分塊分布

  • 片鍵一般選擇的是索引,當查詢時應(yīng)該利用索引進行查詢,這樣mongos會將查詢發(fā)往對應(yīng)分片,而不是發(fā)送到所有的分片上

分片的幾個成員

1.配置服務(wù)器 配置服務(wù)器存儲群集的元數(shù)據(jù)和配置設(shè)置,配置服務(wù)器在 config 數(shù)據(jù)庫 中存儲了集群的元信息。 從MongoDB 3.4開始,配置服務(wù)器必須部署為副本集(CSRS)。而且最好不要手動修改config數(shù)據(jù)庫中的數(shù)據(jù)config數(shù)據(jù)庫包含包含分片群集元數(shù)據(jù)的集合。當元數(shù)據(jù)發(fā)生更改時, MongoDB會將數(shù)據(jù)寫入配置數(shù)據(jù)庫,例如在塊遷移或塊拆分之后。如果三個節(jié)點的集群中一個或者兩個配置服務(wù)器不可用,集群的元信息將變?yōu)?可讀, 你還可以從分片中讀寫信息,但是數(shù)據(jù)塊的遷移以及數(shù)據(jù)塊的分裂在所有配置服務(wù)器都恢復(fù)可用之前不能夠進行.---2.mongos輕量級的服務(wù)器 它將讀寫請求分發(fā)到分片中.應(yīng)用并不直接訪問分片,mongos實例會緩存從配置服務(wù)器得到的路由信息, 當群集有元數(shù)據(jù)更改時,mongos會更新緩存,例如塊拆分或添加分片。3.mongod分片實例 分片是存儲了一個集合部分數(shù)據(jù)的MongoDB實例,每個分片是單獨的 mongod 或者是 replica set . 在生產(chǎn)環(huán)境中,所有的分片都應(yīng)該是復(fù)制集。MongoDB以 每個集合 為單位使用分片, 你 必須 通過 mongos 訪問開啟了分片的集合,如果直接連接到某個分片,你只能看到集合的部分數(shù)據(jù). 每個分片上的數(shù)據(jù)并沒有特定的順序.MongoDB并不保證兩個連續(xù)的數(shù)據(jù)塊會分布在同一個分片上.為了獲得更好的性能,最好在任何可能的時候都使用具有特定目標的操作. 雖然有些操作不得不使用廣播發(fā)送的形式,(比如有的時候需要查詢的數(shù)據(jù)分散在所有的分片上) 你也應(yīng)該盡可能在進行操作時帶有片鍵來盡可能使用具有特定目標的操作.

主分片

每個數(shù)據(jù)庫都有一個”主分片” 用來存儲這個數(shù)據(jù)庫中所有未開啟分片的集合的數(shù)據(jù).改變集群中的主分片,會影響性能

mongodb的塊拆分 和 均衡功能

  • mongodb跟蹤集群數(shù)據(jù)的方式:會將文檔分組為塊,每個塊由給定的片鍵范圍的文檔組成,同一片鍵值的文檔必須在同一塊中,mongos會記錄每個塊中插入多少數(shù)據(jù),一旦到達閾值(這里有一個概念叫 拆分閾值),就會對塊嘗試拆分,需要注意的是經(jīng)過拆分的塊可能還在同一分片上

  • mongos進程需要保持盡量穩(wěn)定,頻繁的掉線上線,可能導(dǎo)致塊拆分功能的失效,導(dǎo)致超大塊的誕生;只要有配置服務(wù)器掛了任何一個,拆分請求都會失敗,mongos到達閾值后,不停的發(fā)送塊拆分請求,會導(dǎo)致拆分風(fēng)暴!

  • mongos還會定期化身為均衡器,用于在不同分片之間移動塊,力求使集群的負載更加均衡。前提是只有到達均衡閾值,才會真正數(shù)據(jù)遷移,數(shù)據(jù)的遷移是對客戶端透明的

Hashed片鍵的分配策略

哈希片鍵的可以更均勻的分布數(shù)據(jù),缺點就是對于范圍查詢性能比較差,HASH適合單調(diào)增減的field。比如說_id和時間戳

如果集合已包含數(shù)據(jù),則必須在使用shardCollection()之前使用db.collection.createIndex()方法在分片鍵上創(chuàng)建散列索引。如果集合為空,MongoDB將創(chuàng)建索引作為sh.shardCollection()的一部分。以下操作使用散列分片策略對目標集合進行分片。sh.shardCollection(“<database>。<collection>”,{<key>:"hashed" })

從頭創(chuàng)建hash分片的步驟

range片鍵的分配策略

基于范圍的分片涉及將數(shù)據(jù)劃分為由分片鍵值確定的連續(xù)范圍。 在此模型中,具有“close”分片鍵值的文檔可能位于相同的塊或分片中。

具體的范圍片鍵命令,同時也是需要在指定鍵上有索引的! sh.shardCollection( "database.collection", { <shard key> } )

從頭創(chuàng)建range分片的步驟

總結(jié)

以上是生活随笔為你收集整理的Mongodb分片学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。