Я построил кластер с 3 осколками. Когда я тестировал ключ сегментированного ранга, я столкнулся с некоторыми проблемами.
Перед тестированием ключа шарда я изменил размер фрагмента:
mongos> use config
switched to db config
mongos> db.settings.save({_id: "chunksize", value: 2})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
mongos> db.settings.find({_id: "chunksize"})
{ "_id" : "chunksize", "value" : 2 }
mongos>
Затем я включил функцию сегментирования теста база данных:
mongos> use admin
switched to db admin
mongos> db.runCommand({enablesharding: "test"})
{
"ok" : 1,
"operationTime" : Timestamp(1585978927, 7),
"$clusterTime" : {
"clusterTime" : Timestamp(1585978927, 7),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
mongos> db.runCommand({shardcollection: "test.ranged", key: {"age": 1}})
{
"collectionsharded" : "test.ranged",
"collectionUUID" : UUID("5403b4c2-6669-4918-a7eb-d210bdad2271"),
"ok" : 1,
"operationTime" : Timestamp(1585978927, 22),
"$clusterTime" : {
"clusterTime" : Timestamp(1585978927, 22),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
mongos>
Затем я попытался запустить 100 000 запросов на вставку на сервер mongos.
mongos> use test
switched to db test
mongos> for (var i = 1; i <= 100000; i++) db.ranged.save({"age": NumberInt(i % 100), "createTime": new Date()});
WriteResult({ "nInserted" : 1 })
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("5e8804c5bdf39b10a00d82cf")
}
shards:
{ "_id" : "shard1", "host" : "shard1/10.251.1.231:27018,10.251.1.232:27018", "state" : 1 }
{ "_id" : "shard2", "host" : "shard2/10.251.1.232:27019,10.251.1.233:27019", "state" : 1 }
{ "_id" : "shard3", "host" : "shard3/10.251.1.231:27020,10.251.1.233:27020", "state" : 1 }
active mongoses:
"4.2.5" : 1
autosplit:
Currently enabled: yes
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
7 : Success
databases:
{ "_id" : "config", "primary" : "config", "partitioned" : true }
config.system.sessions
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard1 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0)
{ "_id" : "test", "primary" : "shard1", "partitioned" : true, "version" : { "uuid" : UUID("6ed79961-a6c3-46c8-bbbe-dba074d782f5"), "lastMod" : 1 } }
test.ranged
shard key: { "age" : 1 }
unique: false
balancing: true
chunks:
shard1 1
shard2 2
shard3 2
{ "age" : { "$minKey" : 1 } } -->> { "age" : 0 } on : shard2 Timestamp(2, 0)
{ "age" : 0 } -->> { "age" : 44 } on : shard2 Timestamp(4, 0)
{ "age" : 44 } -->> { "age" : 88 } on : shard3 Timestamp(4, 1)
{ "age" : 88 } -->> { "age" : 99 } on : shard3 Timestamp(3, 4)
{ "age" : 99 } -->> { "age" : { "$maxKey" : 1 } } on : shard1 Timestamp(3, 1)
mongos>
Вопрос в том, почему количество запрашиваемых документов не равно количеству вставленных документов. Это то, что я неправильно понял ключ осколка дальнего боя? Я надеюсь, что кто-то ответит на мои сомнения. Большое спасибо.
mongos> db.ranged.find({}).count()
166803
mongos>