J'étudie sharding avec MongoDB et j'ai la structure suivante:Pourquoi quand j'ajoute de nouvelles collections, un seul fragment obtient les données? - MongoDB
- 1 Mongod à mon ConfigServer avec seulement 1 membre en replicaSet
- 2 Shards chacun avec 2 membres replicaSet
- 1 Mongos
J'ai une base de données nommée erp et 3 collections, pessoas, produtos et contatos.
J'ai ajouté mes collections en utilisant:
sh.shardCollection("erp.<collection>", { id: 1 }, true)
Je commence par Pessoas de collecte, cette collection ont 2000 documents et sont distribués ainsi:
mongos> db.pessoas.getShardDistribution()
Shard rs1 at rs1/desenv1:27019,desenv1:27020
data : 57KiB docs : 1497 chunks : 36
estimated data per chunk : 1KiB
estimated docs per chunk : 41
Shard rs3 at rs3/desenv1:27022,desenv1:27023
data : 19KiB docs : 503 chunks : 36
estimated data per chunk : 541B
estimated docs per chunk : 13
Totals
data : 77KiB docs : 2000 chunks : 72
Shard rs1 contains 75.27% data, 74.85% docs in cluster, avg obj size on shard : 39B
Shard rs3 contains 24.72% data, 25.15% docs in cluster, avg obj size on shard : 38B"
Après cela, je dois ajouter la collection produtos, et je lui ai donné 1001 registres, alors pourquoi cette collection sont distribués de cette façon:
mongos> db.produtos.getShardDistribution()
Shard rs1 at rs1/desenv1:27019,desenv1:27020
data : 67KiB docs : 1001 chunks : 1
estimated data per chunk : 67KiB
estimated docs per chunk : 1001
Totals
data : 67KiB docs : 1001 chunks : 1
Shard rs1 contains 100% data, 100% docs in cluster, avg obj size on shard : 69B"
Questions:
Pourquoi ne replicaSet "RS1" obtiennent des données? La même chose se produit avec les contatos de collection, seul le fichier "rs1" de replicaSet obtient les données et je ne peux pas distribuer les données à l'autre fragment. Pourquoi cela arrive-t-il et qu'est-ce que je fais de mal?
Comment puis-je répartir également les données? Par exemple avec 2000 registres, 1000 registres dans un fragment et 1000 dans l'autre fragment.
Si vous avez besoin de plus d'informations, dites-le moi.
Merci