Gestion des index Amazon DocumentDB - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des index Amazon DocumentDB

Création d'index Amazon DocumentDB

La création d'index dans Amazon DocumentDB nécessite la prise d'un certain nombre de décisions :

  • Dans quel délai doit-il être terminé ?

  • La collection peut-elle être inaccessible pendant la construction ?

  • Quelle quantité de puissance de calcul d'une instance peut être allouée à la construction ?

  • Quel type d'index faut-il créer ?

Cette section vous aide à répondre à ces questions et fournit les commandes et les exemples de surveillance pour créer un index Amazon DocumentDB sur votre collection de clusters basée sur une instance.

Consignes

Les directives suivantes incluent les limites de base et les compromis de configuration lors de la création de nouveaux index :

  • Prise en charge des versions d'Amazon DocumentDB : alors que l'indexation par un seul travailleur est prise en charge sur toutes les versions d'Amazon DocumentDB, l'indexation par plusieurs travailleurs n'est prise en charge que sur les versions 4.0 et 5.0 d'Amazon DocumentDB.

  • Compromis en termes de performances : l'augmentation du nombre de travailleurs participant au processus de création de l'index augmente l'utilisation du processeur et augmente les E/S de lecture sur l'instance principale de votre base de données Amazon DocumentDB. Les ressources nécessaires à la création d'un nouvel index ne seront pas disponibles pour votre charge de travail en cours d'exécution.

  • Clusters élastiques : l'indexation parallèle n'est pas prise en charge sur les clusters élastiques Amazon DocumentDB.

  • Nombre maximum de travailleurs : le nombre maximum de travailleurs que vous pouvez configurer dépend de la taille de votre instance principale dans votre cluster de base de données. Cela représente la moitié du nombre total de vCPU sur l'instance principale de votre cluster de base de données. Par exemple, vous pouvez exécuter un maximum de 32 travailleurs sur une instance db.r6g.16xlarge dotée de 64 vCPU.

    Note

    Les travailleurs parallèles ne sont pas pris en charge sur les classes d'instance 2xlarge et inférieures.

  • Nombre minimum de travailleurs : le nombre minimum de travailleurs que vous pouvez configurer est de un. Le paramètre par défaut pour la création d'index sur des clusters basés sur des instances est de deux travailleurs. Cependant, vous pouvez réduire le nombre de travailleurs à un en utilisant l'option « threads de travail ». Cela exécutera le processus avec un seul travailleur.

  • Compression d'index : Amazon DocumentDB ne prend pas en charge la compression d'index. La taille des données pour les index peut être plus importante que lorsque vous utilisez d'autres options.

  • Indexation de plusieurs collections : la moitié des vCPU de l'instance principale de votre cluster de base de données peuvent être utilisées par des opérateurs configurés qui créent des index sur plusieurs collections.

  • Types d'index : consultez ce billet de blog pour obtenir une explication complète des types d'index pris en charge sur Amazon DocumentDB.

Premiers pas

Pour démarrer la création d'index sur une collection, utilisez la createIndexes commande. Par défaut, la commande exécute deux tâches parallèles, ce qui multiplie par deux la vitesse du processus de création d'index.

Par exemple, le processus de commande suivant montre comment créer un index pour le champ « user_name » dans un document et augmenter la vitesse du processus d'indexation à quatre travailleurs :

  1. Créez des index à l'aide de deux workers parallèles sur le cluster :

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx"}]})
  2. Pour optimiser la vitesse du processus de création d'index, vous pouvez spécifier le nombre de travailleurs en utilisant l'option « threads de travail » ("workers":<number>) dans la db.runCommand createIndexes commande.

    Augmentez la vitesse du processus à quatre travailleurs parallèles :

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
    Note

    Plus le nombre de travailleurs est élevé, plus la création de l'indice progresse rapidement. Toutefois, plus le nombre de travailleurs augmente, plus la charge sur les vCPU et les E/S de lecture de votre instance principale augmente. Assurez-vous que votre cluster est suffisamment provisionné pour faire face à la charge accrue sans dégrader les autres charges de travail.

État de progression de l'indexation

Le processus de création d'index fonctionne en initialisant, en scannant les collections, en triant les clés et, enfin, en insérant des clés au moyen d'un générateur d'index. Le processus comporte jusqu'à six étapes lorsque vous l'exécutez au premier plan, et jusqu'à neuf étapes lorsque vous l'exécutez en arrière-plan. Vous pouvez consulter les indicateurs d'état tels que le pourcentage d'achèvement, le nombre total de blocs de stockage numérisés, les clés triées et les clés insérées étape par étape.

Surveillez la progression du processus d'indexation à l'aide de la db.currentOp() commande dans le shell mongo. L'achèvement à 100 % de la dernière étape indique que tous les index ont été créés avec succès :

db.currentOp({"command.createIndexes": { $exists : true } })

Types de construction d'index

Les quatre types de constructions d'index sont les suivants :

  • Premier plan : la version de l'index de premier plan bloque toutes les autres opérations de base de données jusqu'à ce que l'index soit créé. La version de premier plan d'Amazon DocumentDB comprend cinq étapes.

  • Premier plan (unique) - Les versions d'index de premier plan pour un seul document (unique) bloquent d'autres opérations de base de données, comme les versions de premier plan classiques. Contrairement à la version de premier plan de base, la version unique utilise une étape supplémentaire (tri des clés 2) pour rechercher les clés dupliquées. La version de premier plan (unique) comprend six étapes.

  • Arrière-plan : la génération de l'index en arrière-plan permet à d'autres opérations de base de données de s'exécuter au premier plan pendant la création de l'index. La construction en arrière-plan d'Amazon DocumentDB comprend huit étapes.

  • Arrière-plan (unique) - Les versions d'index d'arrière-plan pour un seul document (unique) permettent à d'autres opérations de base de données de s'exécuter au premier plan pendant la création de l'index. Contrairement à la version d'arrière-plan de base, la version unique utilise une étape supplémentaire (tri des clés 2) pour rechercher les clés dupliquées. La version d'arrière-plan (unique) comprend neuf étapes.

Étapes de création de l'index

Étape Premier plan Premier plan (unique) Contexte Contexte (unique)

Initialisation

1

1

1

1

index de construction : initialisation

2

2

2

2

index des bâtiments : collection de numérisation

3

3

3

3

index du bâtiment : clés de tri 1

4

4

4

4

index du bâtiment : clés de tri 2

5

index de construction : insertion de clés

6

6

validation : index de numérisation

6

7

validation : tri des tuples

7

8

validation : numérisation de la collection

8

9

  • initialisation - CreateIndex prépare le générateur d'index. Cette phase doit être très brève.

  • building index : initialization - Le générateur d'index se prépare à créer l'index. Cette phase doit être très brève.

  • index de construction : analyse de la collection - Le générateur d'index effectue une analyse de collection pour collecter les clés d'index. L'unité de mesure est le « bloc ».

    Note

    Si plusieurs outils de travail sont configurés pour la création de l'index, ils sont affichés à cette étape. L'étape de « numérisation de la collecte » est la seule étape qui utilise plusieurs outils de traitement pendant le processus de création de l'index. Toutes les autres étapes afficheront un seul travailleur.

  • index de construction : tri des clés 1 - Le générateur d'index trie les clés d'index collectées. L'unité de mesure est « clés ».

  • index de construction : clés de tri 2 - Le générateur d'index trie les clés d'index collectées qui correspondent à des tuples morts. Cette phase n'existe que pour la création d'index uniques. L'unité de mesure est « clés ».

  • index de construction : insertion de clés - Le générateur d'index insère des clés d'index dans le nouvel index. L'unité de mesure est « clés ».

  • validation : index de numérisation - CreateIndex analyse l'index pour trouver les clés qui doivent être validées. L'unité de mesure est le « bloc ».

  • validation : tri des tuples - CreateIndex trie le résultat de la phase de numérisation de l'index.

  • validation : numérisation de la collection - CreateIndex analyse la collection pour valider les clés d'index trouvées lors des deux phases précédentes. L'unité de mesure est le « bloc ».

Exemple de sortie de création d'index

Dans l'exemple de sortie ci-dessous (création d'index de premier plan), l'état de la création de l'index est affiché. Le champ « msg » résume la progression de la construction en indiquant l'étape et le pourcentage d'achèvement de la construction. Le champ « travailleurs » indique le nombre de travailleurs utilisés au cours de cette étape de la construction de l'indice. Le champ « progression » indique les chiffres réels utilisés pour calculer le pourcentage d'achèvement.

Note

Les champs « currentIndexBuild Nom », « msg » et « progression » ne sont pas pris en charge sur Amazon DocumentDB version 4.0.

{ "inprog" : [{ … "command": { "createIndexes": "test", "indexes": [{ "v": 2, "key": { "user_name": 1 }, "name": "user_name_1" }], "lsid": { "id": UUID(“094d0fba-8f41-4373-82c3-7c4c7b5ff13b”) }, "$db": "test" }, "currentIndexBuildName": user_name_1, "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%", "workers": 1, "progress": { "done": 656861, "total": 1003520 }, … ], "ok" : 1 }