回答
如果你不介意我問,你爲什麼要考慮分片? 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
「片鍵分析「 -
- 1. MongDB - 查詢收集了大量
- 2. 併發收集可以運行在年輕一代的次要收集
- 3. mongdb pymongo項目的消失,從名單收集
- 4. 按年齡收集autoCleanup
- 5. 無法創建封頂收藏mongdb
- 6. Laravel收集使用地圖,幷包含
- 7. 獲取值,並在收集
- 8. 使用Python收集歷史30年國庫債券價格
- 9. 收集在使用Python
- 10. 使用Mathematica收集/收集正確
- 11. Mongdb組合限制並使用排序查找功能
- 12. 使用與收集
- 13. Mongodb聚合框架使用mongdb驅動2.2.16在結果集中給出「undefined」
- 14. 使用Docker身份驗證的MongDB
- 15. 如何使用AFNetworking並行請求並收集所有結果
- 16. 收集表單值並使用PHP在textarea中顯示
- 17. 如何收集一個grep並在aws中使用configset
- 18. 我在這裏使用什麼併發收集?
- 19. 比較並使用和不使用垃圾收集器
- 20. 在javascript中將mongdb集合轉換爲數組?
- 21. 吉斯合併收集AbstractModules
- 22. Enyo收集合並策略
- 23. 併發收集優先
- 24. Laravel合併收集失敗?
- 25. touchesBegan並在收集視圖中結束
- 26. 使用AMQP收集事件
- 27. 使用StopWatch收集測試
- 28. 學說使用收集
- 29. 使用hamcrest收集平等
- 30. 如何收集使用XsuperObject
你的問題是什麼?這是否是一個好主意?創建時間是年,月還是DOB?還是什麼? – 2012-04-05 15:33:03