2012-12-20 1 views
0

je regardais à travers les documents, et ne pouvait pas trouver une réponse claireindex MongoDB rares et tesson clés

Dire que j'ai un indice clairsemée [a, b, c]

  1. Will documents avec "a" "b" champs mais pas "c" être inséré à l'index?

  2. La clé shard est-elle indexée dans la dernière version de mongodb?

  3. Si tel est le cas, est-il possible d'effectuer un partitionnement sur [a] en utilisant l'indice de remplissage composé ci-dessus? (par exemple a, b existera toujours)

Répondre

0
  1. Si c n'est pas présent, et la requête utilise l'index c dans le plan de requête, puis document ne sera pas trouvé, car il ne figure pas dans l'indice.
  2. La clé doit être indexée et être unique. Également consulter les notes sur shard key sur the sharding reference doc, il dit

La clé de tesson idéal:

est facilement divisible qui le rend facile pour MongoDB de distribuer du contenu parmi les tessons. Les clés à fragmentation qui ont un nombre limité de valeurs possibles ne sont pas idéales car elles peuvent entraîner des segments qui sont "impossibles à masquer". Voir la section Cardinalité pour plus d'informations. distribuera les opérations d'écriture au sein du cluster, afin d'éviter que le fragment unique ne devienne un goulot d'étranglement. Les clés de fragment qui ont une corrélation élevée avec le temps d'insertion sont de mauvais choix pour cette raison; Cependant, les clés de partition qui ont un «caractère aléatoire» supérieur satisfont mieux cette exigence . Voir la section Write Scaling pour plus d'informations sur l'arrière-plan . permettra aux mongos de renvoyer la plupart des requêtes directement à partir d'une seule instance mongod spécifique. Votre clé shard devrait être le champ principal utilisé par vos requêtes, et les champs avec un haut degré de "hasard" sont de mauvais choix pour cette raison. Voir la section Query Isolation pour des exemples spécifiques.

si hypothétiquement, si mongo accepte un index clairsemés comme la clé de tesson, mongo ne saura pas où placer docs qui ne correspondent pas dans l'index. On peut discuter, les mettre tous dans un autre fragment à cette fin. Contre-argument serait, que se passe-t-il si elle dépasse ... d'où je ne pense pas qu'il serait logique de le faire, même si cela est permis.

3- Je doute indice clairsemés fonctionnera, car tessons ont besoin d'un index unique et un indice clairsemés ne remplit pas les critères. L'exigence d'index unique, je ne l'ai pas trouvée dans les docs, mais si vous utilisez l'aide du shell admin mongo, elle vous en parle.

+0

Il est absolument faux que les fragments requièrent un index unique. Vous pouvez vous assurer d'un index unique et l'utiliser pour votre partition, mais il n'est pas nécessaire qu'il soit unique. –

+0

Je n'ai toujours pas trouvé de documentation qui prouve ou réfute l'exigence d'un index unique.Cependant, en faisant le cours 10gen, dans une des affectations, il y avait un gotcha où l'équilibreur n'équilibrait pas les données, si l'index n'avait pas l'attribut '{unique: true}'. Peut-être, ça aide quelqu'un. – Nasir