MongoDB分區介紹

來源:互聯網
上載者:User

標籤:自動   mongo   配置   mon   可擴充性   讀寫   分數   裝置   有一個   

本文簡單介紹MongoDB的分區功能,對分區進行了概述,具體的功能詳解,後續文章會陸續推出

分區是把資料分配到多個伺服器上的一種方式,MongoDB使用分區實現大資料部署以及高吞吐操作。

 

大資料以及高輸送量的應用會對單個伺服器的容量造成很大的挑戰。比如,高頻率的查詢操作會消耗伺服器的CPU,如果資料集大於系統的RAM容量,也會對硬碟的效能造成影響。

 

應對系統容量增加有兩種方式:水平擴充和垂直擴充。

 

垂直擴容就是增加單個伺服器的容量,比如,使用更高效能的CPU,增加RAM容量,或者增加儲存容量。但是單個伺服器擴容是有限制性的,何況,雲裝置供應商在硬體設定上很容易達到容量上限。所以垂直擴容很有限制性。

 

水平擴容就是把資料和系統壓力分散到多個伺服器上,增加多個伺服器以達到增加整個系統容量的目的。儘管單個伺服器的速度或者容量並不是很大,但是每個伺服器都可以分擔一部分系統壓力,比單個高效能的伺服器更加高效。增加整個部署系統的容量只需要增加幾台伺服器,這樣比增加單個服務的效能更節約成本。缺點就是增加了系統的複雜性以及系統的維護成本。

 

分區叢集

分區叢集包括以下幾個成員:

shard:每個shard包含一組分區資料,每個shard都可以以複製集的方式部署。

mongos:mongos的任務是查詢路由,是用戶端和分區叢集之間的互動介面

config servers:設定管理員存放著系統的中繼資料以及叢集的配置資訊。MongoDB3.4之後,設定管理員必須用複製集的方式部署。

 

是叢集的:

 

分區是把資料分配到多個伺服器上的一種方式,MongoDB使用分區實現大資料部署以及高吞吐操作。

 

大資料以及高輸送量的應用會對單個伺服器的容量造成很大的挑戰。比如,高頻率的查詢操作會消耗伺服器的CPU,如果資料集大於系統的RAM容量,也會對硬碟的效能造成影響。

 

應對系統容量增加有兩種方式:水平擴充和垂直擴充。

 

垂直擴容就是增加單個伺服器的容量,比如,使用更高效能的CPU,增加RAM容量,或者增加儲存容量。但是單個伺服器擴容是有限制性的,何況,雲裝置供應商在硬體設定上很容易達到容量上限。所以垂直擴容很有限制性。

 

水平擴容就是把資料和系統壓力分散到多個伺服器上,增加多個伺服器以達到增加整個系統容量的目的。儘管單個伺服器的速度或者容量並不是很大,但是每個伺服器都可以分擔一部分系統壓力,比單個高效能的伺服器更加高效。增加整個部署系統的容量只需要增加幾台伺服器,這樣比增加單個服務的效能更節約成本。缺點就是增加了系統的複雜性以及系統的維護成本。

 

分區叢集

分區叢集包括以下幾個成員:

shard:每個shard包含一組分區資料,每個shard都可以以複製集的方式部署。

mongos:mongos的任務是查詢路由,是用戶端和分區叢集之間的互動介面

config servers:設定管理員存放著系統的中繼資料以及叢集的配置資訊。MongoDB3.4之後,設定管理員必須用複製集的方式部署。

 

是叢集的:

 

MongoDB是在集合層級對資料進行分區的。

片鍵

MongoDB是使用片鍵對集合中的文檔進行分區的。片鍵是被分區集合中所有文檔都有的一個或者多個欄位。

 

對集合分區時需要選擇片鍵,片鍵一旦選定後就不能再進行修改了。一個分區集合只能有一個片鍵。

 

對於非空集合,片鍵上必須有索引。如果集合是空的,MongoDB在建立片鍵的時候會自動在片鍵上建立索引。

 

片鍵的選擇會影響系統的效能、高效性以及叢集的可擴充性。叢集即使有最好的硬體裝置,如果片鍵選擇有問題也會使叢集很快達到效能瓶頸。片鍵的選擇也會影響叢集使用的分區策略。

 

MongoDB分區會把資料分配到塊中。每個塊都含有基於片鍵的一部分資料。MongoDB通過均衡器實現各個分區伺服器的資料的平衡性。

 

分區的優勢讀寫

MongoDB叢集通過分區來分散讀寫壓力,每個分區維護一部分叢集操作,這樣通過增加分區就可以水平擴充讀寫能力。

 

如果查詢中含有片鍵,mongos會定位到具體的分區上。這種操作比遍曆整個叢集要高效的多。

儲存

每個分區會維護一組資料,隨著資料增長,增加分區就能增加叢集的容量。

高可用

分區叢集在一個或者多個分區宕機的情況下仍然可以提供讀寫操作。即使宕機分區上的資料無法操作,其他可用分區上的資料還可以操作。

 

生產環境中,分區建議部署為複製集,提供冗餘性以及可用性。

分區前需要考慮的事情

分區叢集的基礎設施需要經過精細的容量規劃、執行、維護。

 

片鍵的選擇必須要謹慎,保證叢集的效能和高效性。因為分區後片鍵不能再修改,也不能取消。如果查詢裡面沒有片鍵,mongos會遍曆整個叢集,這種操作會比較耗時。

分區和非分區集合

資料庫可以含有分區集合以及非分區集合。分區集合被分配在叢集的多個分區伺服器中,未分區的集合存放在主分區中。每個資料庫都有一個主分區。

 

 

串連到分區叢集

要想與分區中的集合進行互動,就必須先串連到mongos路由上。用戶端絕對不應該串連到單個分區上進行讀寫操作。串連mngos的方法和串連到單個mongod執行個體是一樣的。

 

 

分區策略

MongoDB支援兩種分區方式:hash分區、範圍分區

Hashed 分區

雜湊分區就是把片鍵的值形成一組雜湊值,每個分區依據雜湊值的範圍存放一定量的文檔。

 

 

即使片鍵的值是相近的,但是他們的雜湊值很可能不一樣,所有就不會分配在一個分區服務去上,這樣的好處就是,在分區鍵上基於範圍的查詢會分散到多個伺服器上進行操作,減少了單個伺服器的壓力。

Ranged分區

範圍分區是依據片索引值的範圍進行分區的,每個分區伺服器儲存一定範圍的資料。

 

 

片索引值相近的資料就很有可能會被分配到同一個塊中。對於範圍分區來說,片鍵的選擇很重要,片鍵選擇合適就可以大大提高系統的系統,反之亦然。選擇的片鍵不合理會導致資料分布不均勻,反而體現不出分區的優勢或者造成系統早早出現系統瓶頸。

 

MongoDB分區介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.