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

  免費注冊 查看新帖 |

Chinaunix

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

[MongoDB] mongodb學(xué)習(xí)筆記 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-12-31 09:28 |只看該作者 |倒序瀏覽
前一段時間研究了一下mongodb的官方手冊(mongodb2.6),對其中一些進行了總結(jié),供大家參考

每個數(shù)據(jù)庫都有一個”主分片” [1] 用來存儲這個數(shù)據(jù)庫中所有未開啟分片的集合的數(shù)據(jù).
--------------------------------------------------------------------------------------------------------------------
分片為應(yīng)對高吞吐量與大數(shù)據(jù)量提供了方法.
    使用分片減少了每個分片需要處理的請求數(shù),因此,通過 水平擴展 ,集群可以提高自己的存儲容量和吞吐量.
    舉例來說,當插入一條數(shù)據(jù)時,應(yīng)用只需要訪問存儲這條數(shù)據(jù)的分片.
    使用分片減少了每個分片存儲的數(shù)據(jù).
    舉例來說,如果一個數(shù)據(jù)庫有1TB數(shù)據(jù),并有4個分片,則每個分片只需要存儲256GB數(shù)據(jù),如果數(shù)據(jù)庫有40個分片,則每個分片只需要存儲25GB數(shù)據(jù).
在某些情況下,使用分片是 唯一 的解決辦法,在以下情況下使用 集群 :
    你的數(shù)據(jù)接近或者超過一個MongoDB實例所能容納的上限.
    系統(tǒng)中 working set 的大小接近系統(tǒng)的內(nèi)存 上限 .
    單一的MongoDB實例不能滿足寫性能要求,并且所有其他方法都沒有明顯作用.
    如果這些特性在你的系統(tǒng)中都沒有出現(xiàn),使用分片只會增加系統(tǒng)的復(fù)雜程度,而不會帶來什么好處.
-------------------------------------------------------------------------------------------------------------------
在測試與開發(fā)環(huán)境下,每個 分片 可以是單獨的 mongod 而不用必須是復(fù)制集.在生產(chǎn)環(huán)境中 必須 部署3臺配置服務(wù)器.
-------------------------------------------------------------------------------------------------------------------
基于范圍的分片方式與基于哈希的分片方式性能對比
基于范圍的分片方式提供了更高效的范圍查詢,給定一個片鍵的范圍,分發(fā)路由可以很簡單地確定哪個數(shù)據(jù)塊存儲了請求需要的數(shù)據(jù),并將請求轉(zhuǎn)發(fā)到相應(yīng)的分片中.
不過,基于范圍的分片會導(dǎo)致數(shù)據(jù)在不同分片上的不均衡,有時候,帶來的消極作用會大于查詢性能的積極作用.比如,如果片鍵所在的字段是線性增長的,一定時間內(nèi)的所有請求都會落到某個固定的數(shù)據(jù)塊中,最終導(dǎo)致分布在同一個分片中.在這種情況下,一小部分分片承載了集群大部分的數(shù)據(jù),系統(tǒng)并不能很好地進行擴展.
與此相比,基于哈希的分片方式以范圍查詢性能的損失為代價,保證了集群中數(shù)據(jù)的均衡.哈希值的隨機性使數(shù)據(jù)隨機分布在每個數(shù)據(jù)塊中,因此也隨機分布在不同分片中.但是也正由于隨機性,一個范圍查詢很難確定應(yīng)該請求哪些分片,通常為了返回需要的結(jié)果,需要請求所有分片.
------------------------------------------------------------------------------------------------------------------
配置服務(wù)器在 config 數(shù)據(jù)庫 中存儲了集群的元信息, mongos 緩存了這個數(shù)據(jù)庫用來做讀寫的路由分發(fā).
如果集群中一個或者兩個配置服務(wù)器不可用,集群的元信息將變?yōu)?可讀 ,你還可以從分片中讀寫信息,但是數(shù)據(jù)塊的遷移以及數(shù)據(jù)塊的分裂在所有配置服務(wù)器都恢復(fù)可用之前不能夠進行.
如果所有的三個配置服務(wù)器都不可用,在重啟 mongos 之前集群依然可用. 但是一旦試圖重啟 mongos ,集群將不能提供任何服務(wù).
沒有集群的元信息,集群將不能正常工作,因此,要 時刻 保持配置服務(wù)器的可用和完整.因此,配置服務(wù)器的備份是很重要的.與分片中的數(shù)據(jù)相比,配置服務(wù)器存儲的信息要小很多.這意味著配置服務(wù)器有相對較小的請求負載,而且對于集群的正常運行,并不需要所有配置服務(wù)器任意時刻都可用,所以,備份配置服務(wù)器是一件容易的事情.
如果集群使用的配置服務(wù)器變換了ip或者域名,你需要重啟 所有 的 mongod 和 mongos .可以在集群部署時使用CNAMEs避免重啟.
------------------------------------------------------------------------------------------------------------------
MongoDB中默認的 chunk 大小是64M,你可以 調(diào)整數(shù)據(jù)塊的大小,但要注意到這有可能會集群造成性能影響.
    數(shù)據(jù)塊大小較小時可以使得分片間的數(shù)據(jù)更均衡,但是是以頻繁的遷移為代價的,會對 mongos 造成壓力.
    數(shù)據(jù)塊大小較大時會使得均衡較少,這從網(wǎng)絡(luò)傳輸 與 mongos 的角度來說更高效,但是,這種高效是通過數(shù)據(jù)不均衡的加重為代價的.
在很多情況下,以分片間數(shù)據(jù)略微的不均衡來防止頻繁的遷移或者無效的遷移,是合理的.
-------------------------------------------------------------------------------------------------------------------
為了使均衡對集群性能的影響減小到最低,在不同分片之間的數(shù)據(jù)塊數(shù)量差異達到閾值時, balancer 不會開始工作,閾值是指集群中 chunks 最多的分片與數(shù)據(jù)塊最少的分片之間數(shù)據(jù)塊數(shù)量的差,均衡器有以下閾值:
在 2.2 版更改: 以下的閾值在版本2.2首次出現(xiàn),在此之前,只有在集群中不同分片之間數(shù)據(jù)塊的數(shù)量差達到8個時,均衡才會開始.
數(shù)據(jù)塊的數(shù)量      遷移閾值
少于20個              2
20到79                4
80 and greater     8
-------------------------------------------------------------------------------------------------------------------
按照順序操作分片:
    records 數(shù)據(jù)庫中的 people 集合使用 { "zipcode": 1, "name": 1 } 片鍵開啟分片.
    這個集合使用 zipcode 字段重新分配數(shù)據(jù).如果很多文檔都有相同的 zipcode 值, chunk 會按照 name 的值進行 分裂.
    people 數(shù)據(jù)庫中的 addresses 集合使用片鍵 { "state": 1, "_id": 1 }.
    這個片鍵使用 state 字段重新分配數(shù)據(jù).如果很多文檔都有相同的 state 值, chunk 會按照 _id 的值進行 分裂.
    assets 數(shù)據(jù)庫中的 chairs 集合使用 { "type": 1, "_id": 1 } 做片鍵.
    這個片鍵使用 type 字段重新分配數(shù)據(jù).如果很多文檔都有相同的 type 值, chunk 會按照 _id 的值進行 分裂.
    events 數(shù)據(jù)庫中的 alerts 集合使用 { "_id": "hashed" } 做片鍵.
-------------------------------------------------------------------------------------------------------------------
在第一個 mongos 連接到一組 配置服務(wù)器 時, 會以默認的64M大小的數(shù)據(jù)塊初始化集群,在大多數(shù)情況下,默認的大小工作得很好.然而,如果你發(fā)現(xiàn)在默認的數(shù)據(jù)塊大小下,自動遷移鎖花費的I/O超過了系統(tǒng)可承受的極限,可以將數(shù)據(jù)塊大小調(diào)小.對于自動分裂和遷移,較小的數(shù)據(jù)塊可以使得遷移速度較快且較頻繁.合法的數(shù)據(jù)塊大小在1M到1024M之間,包含1M和1024M
配置 chunkSize 和選項 --chunkSize 作為啟動參數(shù)啟動 mongos ,在初始化集群之后 不要 影響數(shù)據(jù)塊大小.
為避免引起混亂,只使用 save() 修改數(shù)據(jù)塊大小,而不使用在啟動 mongos 時傳遞參數(shù)修改.
-------------------------------------------------------------------------------------------------------------------
在GridFS存儲中,對 chunks 集合進行分片時, 只有 兩個片鍵可以選擇,``{ files_id : 1 , n : 1 }`` 與 {  files_id : 1 } .
-------------------------------------------------------------------------------------------------------------------
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP