真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mongodb的介紹及分布式應(yīng)用原理

這篇文章主要介紹“MongoDB的介紹及分布式應(yīng)用原理”,在日常操作中,相信很多人在mongodb的介紹及分布式應(yīng)用原理問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”mongodb的介紹及分布式應(yīng)用原理”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元都蘭做網(wǎng)站,已為上家服務(wù),為都蘭各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

一、關(guān)于mongodb

MongoDB是一個(gè)基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。 MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)***能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。

二、mongodb分布式應(yīng)用原理

MongoDB集群包括一定數(shù)量的mongod(分片存儲數(shù)據(jù))、mongos(路由處理)、config server(配置節(jié)點(diǎn))、clients(客戶端)、arbiter(仲裁節(jié)點(diǎn):為了選舉某個(gè)分片存儲數(shù)據(jù)節(jié)點(diǎn)那臺為主節(jié)點(diǎn))。

mongodb的介紹及分布式應(yīng)用原理

1、shards:一個(gè)shard為一組mongod,通常一組為兩臺,主從或互為主從,這一組mongod中的數(shù)據(jù)時(shí)相同的,具體可見《mongodb分布式之?dāng)?shù)據(jù)復(fù)制》。數(shù)據(jù)分割按有序分割方式,每個(gè)分片上的數(shù)據(jù)為某一范圍的數(shù)據(jù)塊,故可支持指定分片的范圍查詢,這同google的BigTable 類似。數(shù)據(jù)塊有指定的最大容量,一旦某個(gè)數(shù)據(jù)塊的容量增長到最大容量時(shí),這個(gè)數(shù)據(jù)塊會(huì)切分成為兩塊;當(dāng)分片的數(shù)據(jù)過多時(shí),數(shù)據(jù)塊將被遷移到系統(tǒng)的其他分片中。另外,新的分片加入時(shí),數(shù)據(jù)塊也會(huì)遷移。 

2、mongos:可以有多個(gè),相當(dāng)于一個(gè)控制中心,負(fù)責(zé)路由和協(xié)調(diào)操作,使得集群像一個(gè)整體的系統(tǒng)。mongos可以運(yùn)行在任何一臺服務(wù)器上,有些選擇放在shards服務(wù)器上,也有放在client 服務(wù)器上的。mongos啟動(dòng)時(shí)需要從config servers上獲取基本信息,然后接受client端的請求,路由到shards服務(wù)器上,然后整理返回的結(jié)果發(fā)回給client服務(wù)器。 

3、config server:存儲集群的信息,包括分片和塊數(shù)據(jù)信息。主要存儲塊數(shù)據(jù)信息,每個(gè)config server上都有一份所有塊數(shù)據(jù)信息的拷貝,以保證每臺config server上的數(shù)據(jù)的一致性。 

4、shard key:為了分割數(shù)據(jù)集,需要制定分片key的格式,類似于用于索引的key格式,通常由一個(gè)或多個(gè)字段組成以分發(fā)數(shù)據(jù),比如: 

{ name : 1 } 

{ _id : 1 } 

{ lastname : 1, firstname : 1 } 

{ tag : 1, timestamp : -1 } 

mongoDB的分片為有序存儲(1為升序,-1為降序),shard key相鄰的數(shù)據(jù)通常會(huì)存在同一臺服務(wù)

(數(shù)據(jù)塊)上。 

三、mongodb分布式部署方式

服務(wù)器部署可以有多種方式。首先,每臺config server、mongos、mongod都可以是單獨(dú)的服務(wù)器,但這樣會(huì)導(dǎo)致某些服務(wù)器的浪費(fèi),比如config server。下圖為物理機(jī)共享的集群部署,不需要額外加機(jī)器。

mongodb的介紹及分布式應(yīng)用原理

當(dāng)然也有其他的方案,比如把mongos部署在所有的mongod(server1-6)上,又或者在每個(gè)運(yùn)用服務(wù)器(server7)上部署mongos。這樣部署有個(gè)好處在于,appserver和mongos之間的通信建立在localhost interface上,減少了通信成本。當(dāng)然,此乃官方說法,但本人有想法,盡管減少了appserver和mongos之間的通信成本,但mongos與mongod之間的通信成本卻增加了,而且把mongos部署在appserver上并不是很利于sa管理,mongoDB應(yīng)該是一個(gè)相對獨(dú)立的系統(tǒng),與應(yīng)用的耦合度應(yīng)該盡量降到最低,萬一應(yīng)用想要換數(shù)據(jù)庫,也能多少減少些工作量。

四、mongodb分布式的安裝

1、下載

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.4.tgz

2、安裝

tar zxvf mongodb-linux-2.0.4.tgz 

cp -fr mongodb-linux-*2.0.4/* /data/mongodb/ 

mkdir -p /data/mongodb/data/                                     #創(chuàng)建數(shù)據(jù)存儲目錄 

mkdir -p /data/mongodb/log/                                      #創(chuàng)建日志存儲目錄 

mkdir -p /data/mongodb/config/                                   #創(chuàng)建配置存儲目錄 

mkdir -p /data/mongodb/arbiter/                                  #創(chuàng)建仲裁節(jié)點(diǎn)存儲目錄 

3、單機(jī)模式以及個(gè)參數(shù)說明

mongod --fork --bind_ip 127.0.0.1 --port 11811 --dbpath /data0/mongodb/data --directoryperdb --logpath /data0/mongodb/log/db1.log --logappend  --nohttpinterface 

netstat -ntlp|grep mongod 

 簡單的參數(shù)說明: 

–logpath 日志文件路徑 

–master 指定為主機(jī)器 

–slave 指定為從機(jī)器 

–source 指定主機(jī)器的IP地址 

–pologSize 指定日志文件大小不超過64M.因?yàn)閞esync是非常操作量大且耗時(shí),最好通過設(shè)置一個(gè)足夠大的oplogSize來避免resync(默認(rèn)的 oplog大小是空閑磁盤大小的5%)。 

–logappend 日志文件末尾添加 

–port 啟用端口號 

–fork 在后臺運(yùn)行 

–only 指定只復(fù)制哪一個(gè)數(shù)據(jù)庫 

–slavedelay 指從復(fù)制檢測的時(shí)間間隔 

–auth 是否需要驗(yàn)證權(quán)限登錄(用戶名和密碼) 

–noauth 不需要驗(yàn)證權(quán)限登錄(用戶名和密碼) 

五、集群模式mongos,mongod,configsvr

1.Shard分片-- 

第一組分片  

192.168.200.226:     

/data/mongodb/bin/mongod --replSet rep1 --fork --port 11813 --maxConns 65535 --dbpath /data/mongodb/data --directoryperdb --logpath /data/mongodb/log/db.log --logappend --nohttpinterface 

#啟動(dòng)rep1分片的一個(gè)數(shù)據(jù)節(jié)點(diǎn)

/data/mongodb/bin/mongos --configdb 192.168.201.226:11812 --port 11811 --fork --chunkSize 256 --logpath /data/mongodb/log/ms.log  #啟動(dòng)路由節(jié)點(diǎn),讀取201.226上的配置節(jié)點(diǎn)的配置文件,(在配置節(jié)點(diǎn)啟動(dòng)后啟動(dòng))

/data/mongodb/bin/mongod --replSet rep1 --fork --port 11814 --dbpath /data/mongodb/arbiter --directoryperdb --logpath /data/mongodb/log/arbiter.log --logappend --nohttpinterface 

#啟動(dòng)分片的仲裁節(jié)點(diǎn)

192.168.201.226:     

/data/mongodb/bin/mongod --replSet rep1 --fork --port 11813 --maxConns 65535 --dbpath /data/mongodb/data --directoryperdb --logpath /data/mongodb/log/db.log --logappend --nohttpinterface

 #啟動(dòng)rep1分片的第二個(gè)數(shù)據(jù)節(jié)點(diǎn)

/data/mongodb/bin/mongos --configdb 192.168.201.226:11812 --port 11811 --fork --chunkSize 256 --logpath /data/mongodb/log/ms.log 

#啟動(dòng)第二個(gè)路由節(jié)點(diǎn) (在配置節(jié)點(diǎn)啟動(dòng)后啟動(dòng))

2.ConfigServer--- 

#啟動(dòng)config server  

    192.168.201.226:     

        /data/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/config --port 11812 --fork --logpath /data/mongodb/log/mc.log 

   #啟動(dòng)配置節(jié)點(diǎn),注意配置節(jié)點(diǎn)應(yīng)該優(yōu)先啟動(dòng),不然路由節(jié)點(diǎn)讀取不到配置節(jié)點(diǎn)信息則會(huì)啟動(dòng)失敗。

3.Mongos路由--- 

    #啟動(dòng)mongos,指定config server, chunkSize 256M 

    192.168.201.226: 

        /data/mongodb/bin/mongos --configdb 192.168.201.226:11812 --port 11811 --fork --chunkSize 256 --logpath /data/mongodb/log/ms.log 

#啟動(dòng)路由節(jié)點(diǎn)

由于機(jī)器有限,只配置了一個(gè)shard分片,該分片里有2個(gè)節(jié)點(diǎn),新增加分片只需對應(yīng)改replSet 名稱即可。

4.配置replSet: 連接任一mongod members 

mongo 192.168.201.226:11813 

config = {_id: 'rep1', members: [ 

{_id: 0, host: '192.168.200.226:11813', priority: 2},                     #priority 為定義優(yōu)先級,默認(rèn)為1,高優(yōu)先級會(huì)被認(rèn)為是主節(jié)點(diǎn)優(yōu)先啟用。 

{_id: 1, host: '192.168.201.226:11813'}, 

{_id: 2, host: '192.168.200.226:11814', arbiterOnly: true}] 

    rs.initiate(config); 

    rs.status() 

5.連接mongos增加shard 80G 

    mongo 192.168.201.226:11811/admin 

    show dbs 

    use admin 

    db.runCommand({addshard:'rep1/192.168.201.226:11813,192.168.200.226:11813',maxsize:81920}) 

    db.runCommand({listshards:1}) 

6.連接mongos增加創(chuàng)建test庫和c1集合,并測試 

    mongo 192.168.201.226:11811/admin 

    db.runCommand({enablesharding:'test'}) 

    printShardingStatus() 

    db.runCommand({shardcollection:'test.auto_increment_id', key:{_id:1}, unique : true}) 

    db.runCommand({shardcollection:'test.c1', key:{_id:1}, unique : true}) 

    for (var i = 1; i <= 100; i++)db.c1.save({id:i,value1:"1234567890",value2:"1234567890",value3:"1234567890",value4:"1234567890"}) 

    db.c1.stats() 

db.createCollection("cap_coll", {capped:true, size:100000, max:100}); 

db.mycoll.validate(); 

7.檢查: 

db.printCollectionStats()

8.管理: 

mongo 127.0.0.1:11811

show dbs

use admin

show collections

db.serverStatus()

db.shutdownServer()

exit

9.索引: 

db.product_data.ensureIndex({data_id: 1}, {unique: true,dropDups: true}); #創(chuàng)建索引   

db.product_data.dropIndexes();  #刪除索引

到此,關(guān)于“mongodb的介紹及分布式應(yīng)用原理”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


新聞名稱:mongodb的介紹及分布式應(yīng)用原理
URL標(biāo)題:http://weahome.cn/article/ihicpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部