通過10Gen手冊後,我可以瞭解到在以下情況下分片是如何工作的。我將使用具有userid,lastupdatetime,以下示例的數據的文檔:MongoDB複合密鑰分片和塊大小與磁盤大小
塊包含Shard ID的有序列表。所以如果我的碎片ID是用戶標識,我期望chunk1包含一個id列表:user1 ... user999(最高64mb限制),chunk2將保存user1000 ... user1999。那是對的嗎?
在前面的例子中,假設chunk1在shard1上,而chunk2在shard2上。如果user1(位於shard1上)有大量文檔,而其他所有用戶都有1-2個文檔,則會使shard1磁盤使用率比shard 2磁盤使用率大很多。如果這是正確的,那麼MongoDB的緩解在那種情況下是什麼?
複合碎片鍵是如何在塊內部排列的?例如,如果複合分片鍵是userid + lastupdatetime,假設以下內容(假設user1有大量文檔)是安全的: chunk1包含值列表:user1,10.00:00; user1,10:01:00 ...; user1,14:04:11 ..(高達64mb限制),chunk2將保存user1,14:05:33; user2,9:00:00 ... user34,19:00;;
是否正確?
關於2 - 它並不能完全回答這個問題 - 因此從理論上講,如果用戶1將有很多很多的文件mongo不會把它放在多於一個碎片上? – Alon1980