Другие коллекции будут располагаться на одном осколке (известном как первичный осколок), если вы не решите их обмануть. Основной осколок задается на уровне базы данных, а не в коллекции, поэтому все незакрашенные коллекции в конкретной базе данных будут иметь один и тот же первичный осколок. Вы можете увидеть первичный для любой конкретной базы данных на выходе sh.status(), в соответствии с приведенной ниже пример:
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("54185b2c2a2835b6e47f7984")
}
shards:
{ "_id" : "shard0000", "host" : "localhost:30000" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "shardTest", "partitioned" : true, "primary" : "shard0000" }
shardTest.foo
shard key: { "_id" : 1 }
chunks:
shard0000 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0)
{ "_id" : "bar", "partitioned" : true, "primary" : "shard0000" }
bar.data
shard key: { "_id" : 1 }
chunks:
shard0000 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0)
{ "_id" : "foo", "partitioned" : true, "primary" : "shard0000" }
foo.data
shard key: { "_id" : 1 }
chunks:
shard0000 9
В этом примере есть только один осколок (shard0000), и, следовательно, он является основным для все базы данных ("primary" : "shard0000"
), за исключением config, который является особым случаем (и находится на серверах конфигурации). Основной базис для базы данных выбирается при создании базы данных.
Следовательно, если у вас был только один осколок, сначала были созданы все ваши базы данных, а затем добавлены новые осколки, все базы данных, созданные вами перед добавлением новых осколков, будут иметь свой основной набор для этого первого осколка (больше нечего было выбрать). Любые базы данных, созданные после того, как у вас есть многократные осколки, могут оказаться в любом из них как основной, по сути, он выбирается с помощью циклического вращения, но у каждого mongos
будет свое представление о том, где он находится в этом раунде.
Этот вопрос принадлежит [dba.stackexchange.com] (http://dba.stackexchange.com). StackOverflow предназначен только для программирования связанных тем, например, для решения «кодовых» проблем. Другие вопросы могут быть отправлены на другие сетевые сайты stackexchange. –