2011-04-13 2 views
4

Depuis la base de données sharding utiliser la touche tesson pour diviser les requêtes de gros morceau et la route, donc je pense que peut-être plus peut clé de tesson aide à faire plus de requêtes cibléesest-ce que la clé de partition multiple aide les performances dans mongodb?

J'ai essayé de spécifier plusieurs clés comme celui-ci

db.runCommand({ shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1} 

mais je N'avez aucune idée si cela fonctionne et quels sont les inconvénients de le faire

+0

J'ai essayé d'expliquer, mais ne semble pas avoir de chance ... seule la clé de partition peut fonctionner comme index de route, les autres ne semblent pas avoir d'effet sur les requêtes – davyzhang

Répondre

3

Pour être clair ici, vous ne pouvez avoir qu'une seule clé de fragment. Vous ne pouvez donc pas avoir plusieurs clés de partition.

Toutefois, vous proposez une compound index comme clé de partition. Cela peut être fait, mais il y a certaines limites.

Par exemple, la combinaison de _id, email et address doit être unique.

Documents pour choosing a shard key. Il y a plusieurs autres considérations que je ne peux pas énumérer ici. S'il vous plaît voir ce document.

+0

merci pour la clarification – davyzhang

3

Sélection de la clé de tesson basée sur:

{coarseLocality : 1, search : 1} 

coarseLocality est tout localité que vous voulez pour vos données, recherche est une recherche commune sur vos données.

Vous devez avoir un index sur la clé que vous écrivez, donc si vous choisissez une clé de valeur aléatoire que vous ne recherchez pas, vous gaspillez un index. Chaque index supplémentaire rend les écritures plus lentes, il est donc important de garder le nombre d'index le plus bas possible. Par conséquent, l'augmentation de la combinaison de touches de fragmentation n'aide pas beaucoup.

Extrait du livre de Kristina Chodrow "Scaling MongoDB".

Questions connexes