Mongodb資料分區的實現

來源:互聯網
上載者:User

轉載自 http://www.cnblogs.com/spnt/

複本集實現了網站的安全備份和故障的無縫轉移,但是並不能實現資料的大型存放區,畢竟物理硬體是有極限的,這個時候就需要做分布式部署,把資料儲存到其他機器上。Mongodb的分區技術就很完美的實現了這個需求。

 理解Mongodb的分區技術即Sharding架構

      什麼是Sharding?說白了就是把海量資料水平擴充的叢集系統,資料分表格儲存體在Sharding的各個節點上。

      Mongodb的資料分開分為chunk,每個chunk都是collection中的一段連續的資料記錄,一般為200MB,超出則產生新的資料區塊。

     構建Sharding需要三種角色,

          shard伺服器(Shard Server):Shard伺服器是儲存實際資料的分區,每個Shard可以是一個mongod執行個體,也可以是一組mongod執行個體構成的Replica Sets,為了實現每個Shard內部的故障自動切換,MongoDB官方建議每個Shard為一組Replica Sets。

          設定管理員(Config Server):為了將一個特定的collection儲存在多個Shard中,需要為該collection指定一個Shard key,決定該條記錄屬於那個chunk,設定管理員可以儲存以下資訊:

                                                1,所有Shard節點的配置資訊

                                                2,每個chunk的Shard key範圍

                                                3,chunk在各Shard的分布情況

                                                4,叢集中所有DB和collection的Shard配置資訊

          路由進程(Route Process):一個前端路由,用戶端由此接入,首先詢問設定管理員需要到那個Shard上查詢或儲存記錄,然後串連相應Shard執行操作,最後將結果返回用戶端。用戶端只需 將原本發給mongod的查詢活更新要求原封不動的發給路由器進程,而不必關心所操作的記錄儲存在那個Shard上。

 

   構建Sharding

     由上面分析可得出,構建一個Sharding至少需要4個mongodb進程,兩個Shard Server(做分區),一個Config Server,一個Route Process,然後安排如下

             進程                連接埠     檔案目錄

            Shard Server1    2000    mongodb5

            Shard Server2    2001    mongodb6

            Config Server     30000    mongodb7

           Route Process     40000    mongodb8

      

  現在開始配置:

      1,啟動Shard Server

 

 

這裡啟動只多了一個命令:shardsvr,用這個命令就表示這個進程是Shard進程。

2,啟動Config Server

啟動Config Server用的是configsvr命令

3,啟動Route Process

    

這裡設定chunk大小為1M,方便測試分區效果

4,配置Sharding

所有進程都啟動好以後,剩餘的就是把他們串成串兒了

 新開個cmd,然後串連到路由器進程中,使用addshard添加到路由器中

 

通過上面兩次操作,整個架構已經串成了一串,但是,別著急,架構還不知道分區的資料庫和片鍵呢

指定分區的資料庫是Friends,然後指定按照表FriendUserAttach中的_id分區。

至此整個系統配置完畢。

驗證分區情況,我是用程式插入的資料,因為表是我實際所用的表,在cmd裡插入就太麻煩了,這裡我用用戶端驅動插入10000條資料

 

用use命令切換到Friends資料庫,然後stats查看目前狀態

欄位說明:sharded為true,說明此表是經過分區處理的

              shards部分有兩個Shard Server分別是:"shard0000" 和 "shard0001"。"shard0000"的欄位count為1016,表明此Shard Server上分布的資料量是1016條,size表示此Shard Server上分布的資料庫大小,單位為b。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.