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

  免費注冊 查看新帖 |

Chinaunix

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

[MongoDB] 用Pre-Splitting提升MongoDB Auto-Sharding效率 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-02-22 19:57 |只看該作者 |倒序瀏覽
用Pre-Splitting提升MongoDB Auto-Sharding效率



MongoDB 的 Auto-Sharding 一直是一個頗受爭議的特性。其理論描述非常完美,但是實際應用上卻出了很多問題,本文深入分析了Auto-Sharding的數(shù)據(jù)遷移過程,找出了影響性能的原因,并提出了作者自己的解決方案。本站簡要轉譯如下:

(更詳細的介紹請看原文:MongoDB Pre-Splitting for Faster Data Loading and Importing)

Auto-Sharding的內部機制
MongoDB 的 Sharding在存儲數(shù)據(jù)時將數(shù)據(jù)進行了分塊存儲(Chunk),每一塊的大小默認為200M。而Sharding 中每一次數(shù)據(jù)遷移的最小單元就是數(shù)據(jù)塊。

MongoDB 后臺有一個叫做Balancer的后臺程序,會檢查各個Sharding結點的分布情況,當發(fā)現(xiàn)不同結點間Chunk數(shù)相差達到一定大小時,就開始時行數(shù)據(jù)遷移,以平衡數(shù)據(jù)在各個Sharding結點的分布。

Balancer 遷移數(shù)據(jù)的過程是,先把要遷移的數(shù)據(jù)從磁盤讀到內存,再進行遷移。

但是當數(shù)據(jù)量比較大時,通常你需要遷移的數(shù)據(jù)可能并沒有被加載到內存里,這時候問題就出現(xiàn)了,你會先把內存中的熱數(shù)據(jù)踢除,以加載從磁盤讀取的需要遷移的數(shù)據(jù),然后在遷移完數(shù)據(jù)后再刪除掉原來結點上的數(shù)據(jù)。在這過程中,由于熱數(shù)據(jù)被踢回磁盤中,可能會嚴重影響性能。

解決方案-預先劃分數(shù)據(jù)區(qū)間
最后的解決方案其實相當于放棄了Auto-Sharding,而是通過MongoDB提供的 Pre-splitting 功能對數(shù)據(jù)進行預先的劃分,這需要你對自己的數(shù)據(jù)分布有一個充分的了解(我相信對數(shù)據(jù)量做一個半年到一年左右的預估來做規(guī)劃還是比較靠譜的做法),在這個基礎上為每臺機器劃分出其合適大小的sharding-key范圍,這樣就能有效的避免過多的數(shù)據(jù)遷移工作。其實這已經相當于放棄了Auto-Sharding轉而使用Manual-Sharding。

Hash Sharding
另外根據(jù)作者透露,10gen 的CTO Eliot 還表示他們正在開發(fā)一種基于Hash的Sharding策略(當前的策略基于范圍值,可以理解為btree方式),這樣可以使數(shù)據(jù)更均勻的分布,但是因為利用了Hash算法,當然也就不能提供范圍查詢這樣的功能了。想像一下相當于一個分布式的key-value存儲。好像也沒什么吸引力。


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

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP