亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 7212 | 回復(fù): 1
打印 上一主題 下一主題

[MongoDB] MongoDB 集群 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-02-22 15:52 |只看該作者 |倒序?yàn)g覽
MongoDB 集群



本文是一篇轉(zhuǎn)載文章,作者對MongoDB集群結(jié)構(gòu),集群中各個(gè)角色的功能和基本原理做了詳細(xì)地圖文并茂地講解,值得一看。

原文鏈接:http://www.javabloger.com/article/mongodb-cluster.html

MongoDB 集群中包含一個(gè)自動(dòng)分片模塊 (“mongos”). 自動(dòng)分片可以用于構(gòu)建一個(gè)大規(guī)模的可擴(kuò)展的數(shù)據(jù)庫集群,這個(gè)集群可以并入動(dòng)態(tài)增加的機(jī)器。自動(dòng)建立一個(gè)水平擴(kuò)展的數(shù)據(jù)庫集群系統(tǒng),將數(shù)據(jù)庫分表存儲在sharding的各個(gè)節(jié)點(diǎn)上。在一個(gè)mongodb的集群中包括一些shards(mongod進(jìn)程),mongos的路由進(jìn)程,一個(gè)或多個(gè)config服務(wù)器。sharding是一種對大規(guī)模數(shù)據(jù)存儲的一種策略,關(guān)于sharding的詳細(xì)信息可以查看這里。也許有人會問,為什么需要做這種策略,因?yàn)樵谝粋(gè)大型系統(tǒng)中最后的瓶頸會落在網(wǎng)絡(luò)的帶寬和磁盤的讀寫上,如果將數(shù)據(jù)分布在多個(gè)機(jī)器上的多個(gè)磁盤上,將會系統(tǒng)數(shù)據(jù)的處理能有所提高。

MongoDB 集群的結(jié)構(gòu):
下圖中Shard是指每個(gè)節(jié)點(diǎn)的shard有一個(gè)或更多的服務(wù)器和存儲數(shù)據(jù)的mongod進(jìn)程,而mongod是MongoDB數(shù)據(jù)的核心進(jìn)程。

每臺機(jī)器上的mongod從配置獲取服務(wù)器(元數(shù)據(jù)metadata ),然后,當(dāng)收到客戶端請求時(shí),它請求路由到相應(yīng)的服務(wù)器組和編譯結(jié)果發(fā)送回客戶端。

mongos進(jìn)行可以被看作是一個(gè)路由和協(xié)調(diào)的過程,因?yàn)樗梢允沟妹總(gè)單一的各個(gè)節(jié)點(diǎn)組成一個(gè)集群系統(tǒng)。 另外還需要強(qiáng)調(diào)一點(diǎn)mongos進(jìn)程沒有持久狀態(tài),每個(gè)實(shí)例都需要一定的數(shù)據(jù)存儲的內(nèi)存空間。

換而言之,所謂MongoDB 集群也就是 MongoDB做了一個(gè)數(shù)據(jù)庫路由的策略,而且保證跨庫操作的數(shù)據(jù)庫事務(wù),而MongoDB 集群中的關(guān)鍵部分Sharding不是一門新技術(shù),而是一種策略,關(guān)鍵還是看應(yīng)用場景和案例提供的可用性,因?yàn)镾harding不僅僅是MongoDB 集群中所提到的分布在不同的機(jī)器上,還可以分表,分區(qū),分?jǐn)?shù)據(jù),等等。



MongoDB 集群的工作原理:

其中有一個(gè)服務(wù)器上存儲著集群的metadata信息,包括每個(gè)服務(wù)器,每個(gè)shard的基本信息和chunk信息Config Server 主要存儲的是chunk信息。每一個(gè)config服務(wù)器都復(fù)制了完整的chunk信息,就是下圖中左邊黃色的部分。

如果客戶端對集群的MongoDB插入一條數(shù)據(jù),客戶端并不知道剛剛插入的數(shù)據(jù)被分配到具體哪個(gè)MongoDB節(jié)點(diǎn)上了,因?yàn)楫?dāng)一條數(shù)據(jù)被傳入 MongoDB集群中通過mongos路由,所以我們并感覺不到是數(shù)據(jù)存放在哪個(gè)shard的 chunk上,但是通過后臺的Sharding的管理命令可以看到插入的數(shù)據(jù)存放在哪個(gè)節(jié)點(diǎn)上。



配置MongoDB集群


模擬2個(gè)shard服務(wù)、一個(gè)config服務(wù)、一個(gè)mongos process,全部運(yùn)行在一個(gè)測試的服務(wù)器上,具體配置步驟如下:
口水: –shardsvr 是表示以sharding模式啟動(dòng)Mongodb服務(wù)器,Mongodb數(shù)據(jù)同步方式參見我寫的另外一篇文章“MongoDB 主(Master)/從(Slave)數(shù)據(jù)同步 ”

  1. $ mkdir /data/db/a
  2. $ mkdir /data/db/b
  3. $ mkdir /data/db/config
  4. $ ./mongod –shardsvr –dbpath /data/db/a –port 10000 > /tmp/sharda.log &
  5. $ cat /tmp/sharda.log
  6. $ ./mongod –shardsvr –dbpath /data/db/b –port 10001 > /tmp/shardb.log &
  7. $ cat /tmp/shardb.log
  8. $ ./mongod –configsvr –dbpath /data/db/config –port 20000 > /tmp/configdb.log &
  9. $ cat /tmp/configdb.log
  10. $ ./mongos –configdb localhost:20000 > /tmp/mongos.log &
  11. $ cat /tmp/mongos.log

  12. $ # we connect to mongos process
  13. $ ./mongo
  14. MongoDB shell version: 1.1.0-
  15. url: test
  16. connecting to: test
  17. type "help" for help
  18. > use admin
  19. switched to db admin
  20. > db.runCommand( { addshard : "localhost:10000", allowLocal : true } )
  21. {"ok" : 1 , "added" : "localhost:10000"}
  22. > db.runCommand( { addshard : "localhost:10001", allowLocal : true } )
  23. {"ok" : 1 , "added" : "localhost:10001"}

  24. > config = connect("localhost:20000")
  25. > config = config.getSisterDB("config")

  26. > test = db.getSisterDB("test")
  27. test

  28. > db.runCommand( { enablesharding : "test" } )
  29. {"ok" : 1}
  30. > db.runCommand( { shardcollection : "test.people", key : {name : 1} } )
  31. {"ok" : 1}

  32. > db.runCommand({listshards:1})
  33. {"servers" : [{"_id" :  ObjectId( "4a9d40c981ba1487ccfaa634")  , "host" : "localhost:10000"},
  34. {"_id" :  ObjectId( "4a9d40df81ba1487ccfaa635")  , "host" : "localhost:10001"}] ,
  35. "ok" : 1}
  36. >
復(fù)制代碼
BTW:
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,MongoDB的數(shù)據(jù)結(jié)構(gòu)非常松散,他的數(shù)據(jù)格式類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。

另外,Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。

Mongo還可以解決海量數(shù)據(jù)的查詢效率,根據(jù)官方文檔,當(dāng)數(shù)據(jù)量達(dá)到50GB以上數(shù)據(jù)時(shí),Mongo數(shù)據(jù)庫訪問速度是MySQL10 倍以上。對于這點(diǎn)我將來會去做些試驗(yàn)來進(jìn)行證明。

每個(gè)節(jié)點(diǎn)上都是單點(diǎn)的,不知道MongoDB Sharding+Replication是什么效果,因?yàn)楸簧⒘械姆⻊?wù)器還是存在著單點(diǎn)的現(xiàn)象,如果其中一個(gè)散列的節(jié)點(diǎn)壞點(diǎn)那么數(shù)據(jù)就不存在了。下面還要試試這2種方式的結(jié)合。

相關(guān)文章:
MongoDB 主(Master)/從(Slave)數(shù)據(jù)同步
Java操作 MongoDB NoSQL數(shù)據(jù)庫

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-02-24 17:33 |只看該作者
謝謝分享
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP