MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Le cas des index hachés MongoDB

En plus des index scalaires (ascendant, décroissant), MongoDB prend également en charge les index "hachés". Lorsque vous utilisez un index haché sur un champ, MongoDB calcule un hachage de la valeur du champ et stocke le hachage dans l'index. Les index hachés ne prennent en charge que la comparaison d'égalité et ne prennent pas en charge les requêtes de plage, et sont généralement utilisés dans les scénarios de partitionnement.

Création d'un index haché MongoDB

Vous pouvez utiliser la syntaxe suivante pour créer un index haché :

db.collection.ensureIndex({'field':'hashed'});

Vous pouvez créer à la fois un index scalaire et un index haché sur le même champ.

Partage MongoDB

En règle générale, le partitionnement MongoDB est mis en œuvre à l'aide d'un partitionnement "basé sur la plage". Dans cette approche, chaque partition se voit attribuer une plage de valeurs de la clé de partition. Si la clé de partition augmente de manière monotone, comme les horodatages ou l'ID d'objet, cela peut parfois entraîner une partition "à chaud", car les valeurs les plus récentes finissent toujours par être acheminées vers la même partition.

La façon de contourner ce problème est d'utiliser le "partitionnement basé sur le hachage". Un hachage de la clé de partition est calculé et cette valeur de hachage est utilisée pour acheminer vers une partition au lieu de la valeur réelle. Cela permet de répartir uniformément la charge sur toutes les partitions au lieu d'envoyer toutes les données les plus récentes à la même partition. Le partitionnement basé sur le hachage est implémenté à l'aide d'index hachés sur votre clé de partition. Pour plus d'informations, reportez-vous à la documentation de partitionnement.

Avantages et inconvénients de l'index haché

  • Avantages

    Les index hachés ont tendance à être plus petits que les index scalaires, car seul un hachage de la clé est stocké au lieu de la clé complète. Par exemple. Dans un test simple avec 100 000 documents, nous avons ajouté des index hachés et scalaires sur un champ de chaîne - "fieldName". Comme indiqué ci-dessous, l'index haché a tendance à être considérablement plus petit que les index scalaires :

    "indexSizes" : {
            "_id_" : 811008,
            "firstName_1" : 4415488,
            "firstName_hashed" : 1490944
    }
    
  • Inconvénients

    Ne prend pas en charge les requêtes de plage. Si vous exécutez une requête de plage sur un index haché, cela entraînera une analyse de l'index.

Index hachés MongoDB pour les fragments - Avantages et inconvénientsCliquez pour tweeter

Contraintes d'index haché

    1. Les index hachés ne prennent pas en charge les tableaux.
    2. Les index hachés ne peuvent pas être des index composés.
    3. Vous ne pouvez pas ajouter de contraintes uniques sur les index hachés.