Tous les produits
Search
Centre de documentation

Tablestore:Index secondaire

Dernière mise à jour :Oct 09, 2026

Si une application doit utiliser différents attributs comme conditions de requête pour interroger des données, définissez ces attributs comme colonnes de clé primaire d'un index secondaire afin d'accélérer la requête. Tablestore propose les fonctionnalités d'index secondaire local et d'index secondaire global pour répondre à différentes exigences en matière de cohérence de lecture lors des interrogations de données. Cette rubrique décrit les termes et les fonctionnalités des index secondaires, les différences entre les types d'index secondaires, ainsi que les notes d'utilisation relatives aux index secondaires.

Informations générales

Vous pouvez interroger les données d'une table de données dans Tablestore en spécifiant la clé primaire de cette table. Toutefois, dans la plupart des cas, de nombreuses applications doivent interroger des données en utilisant des attributs autres que la clé primaire de la table de données. Pour répondre à ce besoin, créez un ou plusieurs index secondaires et utilisez les tables d'index pour interroger les données.

La fonctionnalité d'index secondaire vous permet d'interroger des données en vous basant sur la clé primaire d'une table de données et sur les colonnes de clé d'index des index secondaires créés pour cette table. Cela améliore l'efficacité des requêtes. Lors de la création d'un index secondaire, définissez les attributs que vous souhaitez interroger comme colonnes de clé primaire de la table d'index. Vous pouvez ensuite utiliser les colonnes de clé primaire de la table d'index pour interroger les données. Pour plus d'informations, consultez la section Scénarios.

Termes

Terme

Description

table d'index

Table créée à partir des colonnes indexées d'une table de données.

Les données de la table d'index sont en lecture seule.

colonne prédéfinie

Colonne autre que la clé primaire, prédéfinie lors de la création d'une table de données. Une colonne prédéfinie peut servir de colonne de clé d'index ou de colonne d'attribut dans une table d'index. Spécifiez le type de données d'une colonne prédéfinie lors de son ajout.

Remarque

Tablestore utilise un modèle sans schéma. Vous pouvez écrire différentes colonnes d'attribut dans une ligne sans avoir besoin de les spécifier dans le schéma de la table.

index sur colonne unique

Index créé sur une seule colonne.

index combiné

Index créé sur plusieurs colonnes. Par exemple, un index combiné peut comporter les colonnes de clé d'index 1 et 2.

colonne d'attribut indexée

Colonne prédéfinie mappée d'une table de données vers une table d'index en tant que colonne prédéfinie de la table d'index.

saisie semi-automatique

Fonctionnalité permettant au système d'ajouter automatiquement les colonnes de clé primaire de la table de données qui ne sont pas spécifiées comme colonnes de clé d'index à une table d'index, en tant que colonnes de clé primaire de cette dernière.

Types d'index secondaires

Dans Tablestore, les index secondaires sont classés en index secondaires globaux et index secondaires locaux. Si vous utilisez la fonctionnalité d'index secondaire global, Tablestore synchronise automatiquement les données des colonnes indexées et des colonnes de clé primaire d'une table de données pour laquelle une table d'index est créée, vers la table d'index en mode asynchrone. La latence de synchronisation est de l'ordre de quelques millisecondes.

Pour répondre aux exigences des utilisateurs en matière de forte cohérence lors des interrogations de données, Tablestore propose la fonctionnalité d'index secondaire local. Si vous utilisez la fonctionnalité d'index secondaire local, Tablestore synchronise automatiquement les données des colonnes indexées et des colonnes de clé primaire d'une table de données pour laquelle une table d'index est créée, vers la table d'index en mode synchrone. Une fois les données écrites dans la table de données, vous pouvez immédiatement les interroger depuis la table d'index.

Le tableau suivant décrit les différences entre les index secondaires globaux et les index secondaires locaux en termes de mode de synchronisation, d'exigences concernant la première colonne de clé primaire, de latence de synchronisation et de cohérence de lecture.

Élément

Index secondaire global

Index secondaire local

Mode de synchronisation

Mode asynchrone

Mode synchrone

Exigences concernant la première colonne de clé primaire

La première colonne de clé primaire d'un index secondaire global peut être n'importe quelle colonne de clé primaire ou colonne prédéfinie de la table de données pour laquelle l'index secondaire est créé.

La première colonne de clé primaire d'un index secondaire local doit être identique à la première colonne de clé primaire de la table de données pour laquelle l'index secondaire est créé.

Latence de synchronisation

De l'ordre de quelques millisecondes

En temps réel

Cohérence de lecture

Cohérence à terme

Forte cohérence

Fonctionnalités

Les fonctionnalités des index secondaires incluent les index sur colonne unique, les index combinés, la synchronisation des index, les index couvrants, les index contenant les données historiques des tables de données et les index clairsemés. Le tableau suivant décrit ces fonctionnalités.

Fonctionnalité

Description

Index sur colonne unique et index combiné

Créez un index sur une ou plusieurs colonnes d'une table de données.

Synchronisation des index

Les index secondaires globaux et les index secondaires locaux synchronisent les données selon des modes différents.

  • Si vous utilisez la fonctionnalité d'index secondaire global, Tablestore synchronise automatiquement les données des colonnes indexées et des colonnes de clé primaire d'une table de données pour laquelle une table d'index est créée, vers la table d'index en mode asynchrone. La latence de synchronisation est de l'ordre de quelques millisecondes.

  • Si vous utilisez la fonctionnalité d'index secondaire local, Tablestore synchronise automatiquement les données des colonnes indexées et des colonnes de clé primaire d'une table de données pour laquelle une table d'index est créée, vers la table d'index en mode synchrone. Une fois les données écrites dans la table de données, vous pouvez immédiatement les interroger depuis la table d'index.

Index couvrant

Les tables d'index peuvent contenir des colonnes d'attribut. Créez des colonnes prédéfinies lors de la création d'une table de données. Ensuite, créez une table d'index basée sur les colonnes prédéfinies et les colonnes de clé primaire de la table de données. Spécifiez plusieurs colonnes prédéfinies de la table de données comme colonnes d'attribut d'une table d'index. Vous pouvez également ne spécifier aucune colonne d'attribut pour une table d'index.

Si vous spécifiez plusieurs colonnes prédéfinies d'une table de données comme colonnes d'attribut d'une table d'index, vous pouvez interroger les valeurs de ces colonnes prédéfinies directement depuis la table d'index. Il n'est pas nécessaire d'interroger la table de données.

Index contenant les données historiques d'une table de données

Créez une table d'index contenant les données historiques d'une table de données.

Index clairsemé

Spécifiez une colonne prédéfinie d'une table de données comme colonne d'attribut d'une table d'index. Si une ligne de la table de données ne contient pas la colonne prédéfinie mais contient toutes les colonnes de clé d'index, un index est créé pour cette ligne. En revanche, aucun index ne peut être créé pour une ligne si celle-ci ne contient pas certaines colonnes de clé d'index.

Par exemple, une table de données contient les colonnes de clé primaire PK0, PK1 et PK2, ainsi que les colonnes prédéfinies Defined0, Defined1 et Defined2. Vous créez une table d'index contenant les colonnes de clé d'index PK0, Defined0 et Defined1, ainsi qu'une colonne d'attribut Defined2.

  • Si une ligne de la table de données contient Defined0 et Defined1 mais pas Defined2, un index est créé pour cette ligne.

  • Si une ligne de la table de données contient Defined0 et Defined2 mais pas Defined1, aucun index ne peut être créé pour cette ligne.

Limites

Pour plus d'informations, consultez la section Limites des index secondaires.

Notes d'utilisation

Notes d'utilisation relatives à la création de tables d'index

  • Le système ajoute automatiquement les colonnes de clé primaire de la table de données qui ne sont pas spécifiées comme colonnes de clé d'index à une table d'index, en tant que colonnes de clé primaire de cette dernière. Lorsque vous parcourez les données d'une table d'index, spécifiez les valeurs des colonnes de clé primaire. Les valeurs des colonnes de clé primaire s'étendent de moins l'infini à plus l'infini.

    Lors de la création d'une table d'index, il vous suffit de spécifier les colonnes de clé d'index. Le système ajoute automatiquement toutes les colonnes de clé primaire de la table de données à la table d'index. Par exemple, une table de données contient les colonnes de clé primaire PK0 et PK1, ainsi qu'une colonne prédéfinie Defined0.

    Si vous utilisez la fonctionnalité d'index secondaire global, créez un index sur des colonnes en fonction de vos besoins métier.

    • Si vous créez un index sur la colonne Defined0, Tablestore génère une table d'index dont les colonnes de clé primaire sont Defined0, PK0 et PK1.

    • Si vous créez un index sur les colonnes Defined0 et PK1, Tablestore génère une table d'index dont les colonnes de clé primaire sont Defined0, PK1 et PK0.

    • Si vous créez un index sur la colonne PK1, Tablestore génère une table d'index dont les colonnes de clé primaire sont PK1 et PK0.

    Si vous utilisez la fonctionnalité d'index secondaire local, la première colonne de clé primaire d'une table d'index doit être identique à la première colonne de clé primaire de la table de données pour laquelle la table d'index est créée.

    • Si vous créez un index sur les colonnes PK0 et Defined0, Tablestore génère une table d'index dont les colonnes de clé primaire sont PK0, Defined0 et PK1.

    • Si vous créez un index sur les colonnes PK0, PK1 et Defined0, Tablestore génère une table d'index dont les colonnes de clé primaire sont PK0, PK1 et Defined0.

    • Si vous créez un index sur les colonnes PK0 et PK1, Tablestore génère une table d'index dont les colonnes de clé primaire sont PK0 et PK1.

  • Spécifiez des colonnes prédéfinies d'une table de données comme colonnes d'attribut de la table d'index créée pour cette table, en fonction de vos modes d'interrogation et de vos exigences en matière de coûts.

    Après avoir spécifié une colonne prédéfinie d'une table de données comme colonne d'attribut de la table d'index créée pour cette table, vous pouvez interroger les valeurs de cette colonne prédéfinie directement depuis la table d'index. Il n'est pas nécessaire d'interroger la table de données. Toutefois, cela augmente les coûts de stockage. Si une colonne prédéfinie de la table de données n'est pas spécifiée comme colonne d'attribut de la table d'index, vous devez interroger les valeurs de cette colonne prédéfinie depuis la table de données.

  • Lorsque vous utilisez la fonctionnalité d'index secondaire global, spécifiez une colonne d'une table de données comme première colonne de clé primaire d'une table d'index en fonction de vos besoins métier.

    • Si une colonne dont la valeur est une heure ou une date constitue la première colonne de clé primaire d'une table d'index, la vitesse de mise à jour de la table d'index peut diminuer. Par conséquent, nous vous recommandons de ne pas spécifier ce type de colonne comme première colonne de clé primaire d'une table d'index.

      Nous vous recommandons de hacher la colonne dont la valeur est une heure ou une date, puis de créer un index sur la colonne hachée. Si vous avez besoin d'effectuer un hachage, contactez le support technique de Tablestore via DingTalk.

    • Nous vous déconseillons de spécifier une colonne de faible cardinalité ou une colonne contenant des valeurs énumérées comme première colonne de clé primaire d'une table d'index. Par exemple, si vous spécifiez la colonne « genre » comme première colonne de clé primaire d'une table d'index, l'évolutivité horizontale de la table d'index sera limitée. Par conséquent, les performances en écriture seront compromises.

Notes d'utilisation relatives à l'utilisation des tables d'index

  • Respectez les règles suivantes lors de l'écriture de données dans une table de données pour laquelle une table d'index est créée. Sinon, les données ne pourront pas être écrites dans la table de données.

    • Vous ne pouvez pas spécifier de numéro de version pour les données que vous écrivez dans la table de données.

    • Des lignes dupliquées ayant la même valeur de clé primaire ne peuvent pas exister lors d'une opération d'écriture par lot.

  • Utilisez une table d'index uniquement pour interroger des données. Vous ne pouvez pas écrire de données dans une table d'index.

Opérations API

Le tableau suivant décrit les opérations API que Tablestore fournit pour gérer les index secondaires.

Opération API

Description

CreateIndex

Crée une table d'index pour une table de données existante.

Remarque
  • Vous pouvez spécifier si vous souhaitez inclure les données historiques d'une table de données dans une table d'index que vous créez en appelant l'opération CreateIndex.

  • Vous pouvez créer une ou plusieurs tables d'index lors de la création d'une table de données en appelant l'opération CreateTable.

GetRow

Lit une ligne de données depuis une table d'index.

GetRange

Lit les données dans une plage spécifiée depuis une table d'index.

DropIndex

Supprime une table d'index d'une table de données.

Important

Avant d'appeler l'opération DeleteTable pour supprimer une table de données, vous devez d'abord supprimer les tables d'index créées sur cette table de données. Sinon, vous ne pourrez pas supprimer la table de données.

Utiliser les index secondaires

Utilisez les index secondaires via la console Tablestore, l'interface CLI Tablestore ou les SDK Tablestore. Pour plus d'informations, consultez les rubriques suivantes :

Facturation

Lorsque vous utilisez des index secondaires, vous êtes facturé pour l'utilisation du stockage des données d'index et pour le débit de lecture généré lors de l'interrogation des données d'index. Pour plus d'informations, consultez la section .

Références

Si vous souhaitez interroger des données de manière plus efficace et flexible, utilisez la fonctionnalité d'index de recherche. La fonctionnalité d'index de recherche propose plusieurs méthodes d'interrogation, notamment la requête booléenne, la recherche en texte intégral, la requête par préfixe et la requête floue. Pour plus d'informations, consultez la section Index de recherche.

FAQ