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.
|
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.
|
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 |
Crée une table d'index pour une table de données existante. Remarque
| |
Lit une ligne de données depuis une table d'index. | |
Lit les données dans une plage spécifiée depuis une table d'index. | |
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.