2012-04-05 26 views
0
碎片鍵「月」字段

目前,我們正在實施一個解決方案,我們有我們要基於以下領域的分片集合:使用「年」,並收集在MongDB

年(INT)

月(INT)

我們希望產生每年大約有數據收集的2GB。

+1

你的問題是什麼?這是否是一個好主意?創建時間是年,月還是DOB?還是什麼? – 2012-04-05 15:33:03

回答

6

如果你不介意我問,你爲什麼要考慮分片? 2GB應該很容易安裝在一臺服務器上。這就是說,如果你肯定要分割你的集合,那麼選擇一個非遞增的分片密鑰是非常重要的,這個分片密鑰足夠精細,從而永遠不會發生分塊不能分裂的情況。

例如,如果一個集合被單獨拆分月那麼就只有12種可能的塊。如果1月份是插入的流行月份,那麼可能會出現這種情況,即一百萬(只是選擇一個大數目)記錄可能會插入到該塊中,並且永遠無法分割。

不選擇遞增(或遞減)的分片鍵也很重要。隨着新文檔被插入到集合中,每個後續文檔都將被添加到同一個塊中,直到該塊達到其大小限制並且必須被分割。然後可以將較低的塊移動到不同的服務器,創建一個「瀑布」效果(一個碎片不斷填滿塊,然後移動到其他碎片)。與此同時,所有新文檔都會不斷寫入同一個碎片,創建所謂的「熱點」。如果插入速率足夠,磁盤可能會達到其IO限制,嘗試寫入新文檔,同時將現有數據遷移到另一個分片。

蒙戈「分片介紹」的文件,對文件 如何存儲在分片集合的詳細信息。 http://www.mongodb.org/display/DOCS/Sharding+Introduction

此外,蒙戈文件「選擇碎片密鑰」提供了選擇片鍵時需考慮什麼好 細節。 http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key

如果可能,我建議您閱讀Kristina Chodorow的「Scaling MongoDB」。 http://shop.oreilly.com/product/0636920018308.do這提供了一個很好的介紹分片以及更詳細的解釋Dos和選擇上面提到的分片密鑰。

以下是其他用戶詢問有關分片和選擇分片密鑰的一些問題的鏈接。 (您可能會認識到一些鏈接和一些作者)希望這些資源可以提高您對分片工作原理的理解,並且如果您仍然決定分割您的集合,請允許您選擇一個高效的分片鍵。

「拆分不平衡」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/1328250382087448

「什麼是設計用於該數據集的碎片指數最好的方法」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/5bda4a39d9be54f5

「低基數碎片鍵」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/3c96d1c254f113b1

「片鍵分析「 -​​