這是一種將海量的數(shù)據(jù)水平擴(kuò)展的數(shù)據(jù)庫集群系統(tǒng)數(shù)據(jù)分表存儲在sharding 的各個節(jié)點(diǎn)
上使用者通過簡單的配置就可以很方便地構(gòu)建一個分布式MongoDB 集群。
MongoDB 的數(shù)據(jù)分塊稱為 chunk。每個 chunk 都是 Collection 中一段連續(xù)的數(shù)據(jù)記錄通
常大尺寸是 200MB超出則生成新的數(shù)據(jù)塊。
要構(gòu)建一個 MongoDB Sharding Cluster需要三種角色
1、 Shard Server
即存儲實(shí)際數(shù)據(jù)的分片每個Shard 可以是一個mongod 實(shí)例也可以是一組mongod 實(shí)例
構(gòu)成的Replica Set。為了實(shí)現(xiàn)每個Shard 內(nèi)部的auto-failoverMongoDB 官方建議每個Shard
為一組Replica Set。
2、 Config Server
為了將一個特定的collection 存儲在多個shard 中需要為該collection 指定一個shard key
例如{age: 1} shard key 可以決定該條記錄屬于哪個chunk。Config Servers 就是用來存儲
所有shard 節(jié)點(diǎn)的配置信息、每個chunk 的shard key 范圍、chunk 在各shard 的分布情況、
該集群中所有DB 和collection 的sharding 配置信息。
3、Route Process
這是一個前端路由客戶端由此接入然后詢問Config Servers 需要到哪個Shard 上查詢或
保存記錄再連接相應(yīng)的Shard 進(jìn)行操作最后將結(jié)果返回給客戶端。客戶端只需要將原本
發(fā)給mongod 的查詢或更新請求原封不動地發(fā)給Routing Process而不必關(guān)心所操作的記錄
存儲在哪個Shard 上。
下面我們在同一臺物理機(jī)器上構(gòu)建一個簡單的 Sharding Cluster
架構(gòu)圖如下
創(chuàng)建數(shù)據(jù)目錄和日志目錄
啟動Shard Server 實(shí)例1和實(shí)例2
啟動Config Server
啟動Route Process
mongos 啟動參數(shù)中chunkSize 這一項是用來指定chunk 的大小的單位是MB默認(rèn)大小
為200MB為了方便測試Sharding 效果我們把chunkSize 指定為 1MB。
配置Sharding
接下來我們使用MongoDB Shell 登錄到mongos添加Shard 節(jié)點(diǎn)
驗(yàn)證Sharding正常工作
我們已經(jīng)對test.users 表進(jìn)行了分片的設(shè)置下面我們們插入一些數(shù)據(jù)看一下結(jié)果
我們看一下磁盤上的物理文件情況
看上述結(jié)果表明test.users 集合已經(jīng)被分片處理了但是通過mongos 路由我們并感覺
不到是數(shù)據(jù)存放在哪個shard 的chunk 上的這就是MongoDB 用戶體驗(yàn)上的一個優(yōu)勢即
對用戶是透明的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。