Когда я использовал хешированный ключ шарда, все мои шарды уже разделяются на куски перед добавлением каких-либо данных, как в примере вывода из sh.status () ниже.
sample.test
shard key: { "sampleId" : "hashed" }
unique: false
balancing: true
chunks:
shard001 2
shard002 2
{ "sampleId" : { "$minKey" : 1 } } -->> { "sampleId" : NumberLong("-4611686018427387902") } on : shard001 Timestamp(1, 0)
{ "sampleId" : NumberLong("-4611686018427387902") } -->> { "sampleId" : NumberLong(0) } on : shard001 Timestamp(1, 1)
{ "sampleId" : NumberLong(0) } -->> { "sampleId" : NumberLong("4611686018427387902") } on : shard002 Timestamp(1, 2)
{ "sampleId" : NumberLong("4611686018427387902") } -->> { "sampleId" : { "$maxKey" : 1 } } on : shard002 Timestamp(1, 3)
Теперь, когда используется составной ключ или неблокированный ключ и выполняется sh.status (), я вижу только один из моих осколков, содержащий 1 кусок.Теперь я должен заполнить его до максимума 64 МБ, чтобы создать второй блок.В приведенном ниже примере у меня есть shard002 и shard001.
sample.test
shard key: { "sampleId" : 1, "uid" : 1 }
unique: false
balancing: true
chunks:
shard002 1
{ "sampleId" : { "$minKey" : 1 }, "uid" : { "$minKey" : 1 } } -->> { "sampleId" : { "$maxKey" : 1 }, "uid" : { "$maxKey" : 1 } } on : shard002 Timestamp(1, 0)
Итак, мой вопрос: почему порции генерируются, когда нет данных при использовании хешированного ключа шарда?