Vous pouvez modifier dynamiquement le schéma d'un index de recherche pour ajouter, mettre à jour ou supprimer des colonnes, ou encore changer sa clé de routage et sa méthode de prétri. Cette fonctionnalité vous permet de répondre à de nouvelles exigences métier ou d'optimiser les performances. Le processus consiste à créer un index canari avec un schéma modifié, à synchroniser les données, à effectuer des tests A/B avec une pondération du trafic, à permuter les schémas des index source et canari, puis à supprimer l'index canari.
Fonctionnement
Les tables de données Tablestore sont sans schéma, mais un index de recherche possède un schéma rigide. Lors de la création d'un index de recherche, vous devez définir les colonnes à indexer pour les requêtes. La modification de ce schéma est souvent nécessaire pour prendre en charge les évolutions métier ou l'ajustement des performances. Voici les scénarios courants :
Ajouter des colonnes d'index : À mesure que votre activité évolue, il peut s'avérer nécessaire d'interroger des colonnes supplémentaires.
Mettre à jour les colonnes d'index : Vous pouvez modifier des propriétés telles que le type de colonne, les colonnes virtuelles, les paramètres de tableau, les analyseurs ou les formats de date.
Supprimer des colonnes d'index : Vous pouvez retirer les colonnes qui ne sont plus nécessaires pour les requêtes.
Modifier la clé de routage : Une clé de routage bien définie peut réduire l'amplification en lecture et améliorer les performances des requêtes.
Modifier le prétri : Si l'ordre de tri des données dans une requête correspond à la configuration de prétri de l'index, la vitesse d'exécution de la requête s'améliore.
Flux de travail
Étant donné que son comportement est dynamique, vous ne devez pas utiliser cet index temporaire pour les requêtes. Si cette fonctionnalité ne répond pas à vos besoins, soumettez un ticket pour nous contacter.
La figure suivante illustre le flux de travail permettant de modifier dynamiquement un schéma. L'ensemble du processus est transparent pour votre application, ce qui vous permet de modifier le schéma sans changer le code de votre application.
Le tableau suivant décrit les principales étapes de la modification du schéma d'un index de recherche.
|
Étape |
Actions |
Description |
|
1 |
Créer un index canari |
Créez un index canari pour l'index source et définissez son nouveau schéma en ajoutant, modifiant ou supprimant des colonnes selon les besoins. |
|
2 |
Vérifier la progression de la synchronisation de l'index |
Avant de poursuivre, attendez que toutes les données existantes et incrémentielles soient synchronisées et que la progression de l'index canari corresponde à celle de l'index source. |
|
3 |
Définir les poids pour les tests A/B |
Les tests A/B vous permettent de répartir le trafic des requêtes entre les index source et canari afin de valider le nouveau schéma. Redirigez progressivement le trafic vers l'index canari jusqu'à ce qu'il gère 100 % du trafic des requêtes. |
|
4 |
Permuter les schémas d'index |
Lorsque tout le trafic des requêtes est basculé vers l'index canari, permutez les schémas de l'index source et de l'index canari. Après la permutation, le nom de l'index source pointe vers le nouveau schéma, tandis que le nom de l'index canari pointe vers l'ancien. Tout le trafic des requêtes est alors dirigé vers le nom de l'index source, qui utilise désormais le nouveau schéma. |
|
5 |
Supprimer l'index canari |
Après avoir permuté les schémas et vérifié que l'index fonctionne comme prévu, attendez une période de stabilisation (par exemple, un jour) avant de supprimer l'index canari. |
Procédure
-
Accédez à l'onglet Indexes.
Connectez-vous à la console Tablestore.
Dans la barre de navigation supérieure, sélectionnez une région et un groupe de ressources.
Sur la page Overview, cliquez sur le nom de l'instance, ou cliquez sur Manage Instance dans la colonne Actions.
Sous l'onglet Instance Details, dans la zone Tables, cliquez sur le nom de la table de données ou sur Indexes dans la colonne Actions.
-
Créez un index canari basé sur l'index source.
Sous l'onglet Indexes, localisez l'index de recherche et cliquez sur Change Schema dans la colonne Actions.
-
Dans la boîte de dialogue Reindex, ajoutez, modifiez ou supprimez des champs d'index selon les besoins.
La boîte de dialogue Reindex contient les éléments de configuration suivants :
Informations de base de l'index : Index Type (par exemple, index de recherche), Instance Name, Table Name (par exemple,
exampletable), Index Name (par exemple,exampletable_index), et Canary Index Name (par exemple,exampletable_index_reindex).Table de configuration des champs : Chaque ligne vous permet de définir les propriétés Field Name, Field Type, Index Parameters, Array, Highlight et Virtual Column. Vous pouvez cliquer sur le bouton + pour ajouter un champ, ou sur l'icône de suppression pour retirer un champ.
En bas de page, un commutateur Advanced Settings est disponible. Une fois la configuration terminée, cliquez sur OK.
-
Pour modifier la clé de routage ou la méthode de prétri, activez Advanced Settings et configurez les paramètres décrits dans le tableau suivant.
Paramètre
Description
Routing Key :
Spécifie des champs de routage personnalisés. Vous pouvez sélectionner une ou plusieurs colonnes de clé primaire comme champs de routage.
Lors de l'écriture des données dans l'index, le système utilise la valeur de la clé de routage pour déterminer la distribution des données. Les enregistrements ayant la même valeur de clé de routage sont indexés dans la même partition. Pour plus d'informations, consultez Utiliser des champs de routage dans un index de recherche.
Pre-sorting
Méthode de tri par défaut des données dans l'index de recherche. Le prétri détermine l'ordre par défaut dans lequel les résultats de requête sont renvoyés. Pour plus d'informations, consultez Prétri de l'index.
-
Pour trier par clé primaire, sélectionnez Default.
-
Pour trier par valeurs de champ ou par une combinaison de colonnes de clé primaire, sélectionnez Custom et configurez les paramètres.
-
Sélectionnez un type de tri, tel que Primary Key Pre-sorting ou Field Pre-sorting, puis cliquez sur Add.
-
Sélectionnez le nom du champ et l'ordre de tri.
Les ordres de tri pris en charge sont croissant et décroissant.
ImportantVous devez sélectionner un nom de champ uniquement si vous choisissez Field Pre-sorting.
Lors de l'utilisation d'un tri personnalisé, vous pouvez configurer à la fois le prétri par clé primaire et le prétri par champ selon les besoins.
-
-
Cliquez sur OK.
Dans la boîte de dialogue Index Comparison, examinez la comparaison de la clé de routage, du prétri et du schéma entre les index source et canari. Après avoir confirmé l'exactitude des informations, cliquez sur Yes.
-
Vérifiez les informations de synchronisation de l'index.
-
Cliquez sur l'icône
située à côté de l'index source, ou cliquez sur le nom de l'index source.L'index canari de l'index source s'affiche.
-
Cliquez sur Use Gray Index dans la colonne Actions de l'index canari.
ImportantL'index canari passe par une phase de synchronisation complète des données et une phase de synchronisation incrémentielle des données.
Avant la fin de la synchronisation des données, si vous placez le pointeur sur le bouton Use Gray Index dans la colonne Actions, une info-bulle indiquant Yes, but the operation may cause security risks. apparaît et le basculement est désactivé.
Lorsque l'index canari a rattrapé l'index source, si vous placez le pointeur sur le bouton Use Gray Index dans la colonne Actions, une info-bulle indiquant Yes. The operation is secure. apparaît. Vous pouvez alors passer aux étapes suivantes.
-
Dans la boîte de dialogue Use Gray Index, consultez les informations de synchronisation de l'index.
Le haut de la boîte de dialogue affiche le Data Status (Synchronizing) et le Switchover Status (Safe to switch). Les informations relatives à l'index sont présentées en deux colonnes pour l'index source et l'index canari. Chaque colonne contient les champs suivants :
Sync Status
Rows
Created At
Last Sync Time
Sync Latency
Data Lifecycle
En bas, dans la zone Actions, vous pouvez utiliser des curseurs pour ajuster les poids de trafic de l'source index et de l'canary index, puis cliquer sur Set Weight pour enregistrer la configuration, ou sur Switch Index pour finaliser le basculement de l'index.
-
-
Une fois la synchronisation terminée, effectuez des tests A/B en définissant les poids de trafic.
Utilisez les tests A/B pour valider le nouveau schéma en répartissant le trafic des requêtes entre les index source et canari. Vous devez basculer tout le trafic vers l'index canari avant de pouvoir passer à l'étape suivante.
Dans la section Operations de la boîte de dialogue Use Gray Index, faites glisser le curseur pour ajuster les poids des index source et canari, puis cliquez sur Set Weight.
Dans la boîte de dialogue Set Weight, examinez les données de poids et la comparaison des schémas.
Après avoir confirmé l'exactitude des informations, cliquez sur Set Weight.
Dans la boîte de dialogue de confirmation qui s'affiche, cliquez sur Yes.
-
Lorsque tout le trafic des requêtes est basculé vers l'index canari, permutez les schémas des index source et canari.
Après la permutation, le nom de l'index source pointe vers le nouveau schéma et le nom de l'index canari pointe vers l'ancien. Tout le trafic des requêtes est alors dirigé vers le nom de l'index source, qui utilise désormais le nouveau schéma.
Dans la boîte de dialogue Use Gray Index, confirmez que l'état des données est In canary release, que l'état du basculement est Yes. The operation is secure., que le poids de l'index source est 0 et que le poids de l'index canari est 100, puis cliquez sur Switch Index.
Dans la section Operations de la boîte de dialogue Use Gray Index, cliquez sur Switch Index.
Dans la boîte de dialogue Switch Index, examinez la comparaison de la clé de routage, du prétri et du schéma entre les index source et canari. Après avoir confirmé l'exactitude des informations, cliquez sur Confirm Switch.
-
Après avoir permuté les schémas et vérifié que l'index fonctionne comme prévu, attendez une période de stabilisation (par exemple, un jour) avant de supprimer l'index canari.
Confirmez que la boîte de dialogue Use Gray Index affiche l'état des données comme Released, l'état du basculement comme Yes. The operation is secure., et que la zone Actions indique un trafic de 100 pour l'source index et de 0 pour l'canary index.
Dans la boîte de dialogue Use Gray Index, cliquez sur Delete Canary Release.
Dans la boîte de dialogue Are you sure you have completed the canary release and want to delete the old index?, confirmez que les informations relatives à l'index canari à supprimer sont correctes. Ensuite, dans la zone de texte, saisissez
I have confirmed that the new index data has been synchronized and has been in canary release for a period of time.Cliquez sur Yes.
Mesures de sécurité
Pour garantir la sécurité opérationnelle, Tablestore propose un mécanisme de restauration et des alertes de basculement afin de minimiser les risques lors de la modification d'index.
-
Mécanisme de restauration
Les étapes clés du processus de modification dynamique du schéma prennent en charge la restauration.
Après la création d'un index canari, si vous constatez que son schéma est incorrect, vous pouvez le supprimer et en créer un nouveau.
Pendant les tests A/B, vous pouvez rediriger progressivement le trafic vers l'index canari en ajustant les poids de trafic. En cas de problème, vous pouvez à tout moment rediriger le trafic vers l'index source en réinitialisant les poids.
Après la permutation des schémas, si vous rencontrez des problèmes, vous pouvez à tout moment effectuer une opération Cancel Switchover pour revenir au schéma de l'index source. Les opérations Switch Index et Cancel Switchover sont inverses l'une de l'autre.
-
Alertes de basculement
Le basculement du trafic vers l'index canari avant qu'il ne soit entièrement synchronisé avec l'index source peut entraîner le renvoi de données obsolètes par les requêtes. Tablestore détermine si le basculement est « sûr » en fonction de l'état de synchronisation et de la dernière heure de synchronisation des deux index.
Tablestore considère qu'un basculement est Yes. The operation is secure. dans les conditions suivantes :
L'index source est en phase de synchronisation complète et l'index canari est en phase complète ou incrémentielle, ce qui signifie que l'index canari a rattrapé l'index source.
Les index source et canari sont tous deux en phase de synchronisation incrémentielle, et la dernière heure de synchronisation de l'index canari n'est pas antérieure de plus de 60 secondes à celle de l'index source.
Facturation
La création d'index canaris et l'écriture de données dans ceux-ci ne sont pas facturées. Vous êtes facturé pour le stockage consommé par les deux index et pour les unités de capacité de lecture (CU) réservées provisionnées pour ceux-ci. Pour plus d'informations, consultez Éléments facturables des index de recherche.
Documents connexes
Pour interroger de nouveaux champs ou types de données sans modifier la structure de la table, vous pouvez modifier le schéma de l'index de recherche ou utiliser la fonctionnalité de colonnes virtuelles lors de la création d'un nouvel index de recherche. Pour plus d'informations, consultez Colonnes virtuelles.
Tablestore prend en charge divers types de requêtes pour différents scénarios, notamment Requête MatchAll, Requête Match, Requête Match Phrase, Requête Term, Requête Terms, Requête Wildcard, Requête Prefix, Requête Suffix, Requête wildcard basée sur la tokenisation, Requête Range, Requête Bool, Requête Nested, Requête Geo-distance, Requête Geo-bounding box, Requête Geo-polygon, Requête Exists, Collapse (distinct) et Colonnes virtuelles pour interroger vos données.
Pour interroger rapidement des données de différents types dans un index de recherche à l'aide d'instructions SQL, vous pouvez utiliser la fonctionnalité de requête SQL. Pour plus d'informations, consultez Requête SQL, Créer des tables de mappage pour les index de recherche, Interroger des données, Recherche en texte intégral, Type Array, Type Nested et Colonnes virtuelles.
Utilisez la fonctionnalité d'agrégation d'index de recherche pour effectuer des analyses de données telles que la recherche de minimums, de maximums, de sommes et de moyennes, le comptage de lignes, le comptage distinct, le calcul de percentiles, le regroupement par valeur de champ, par plage, par emplacement géographique ou par conditions de filtre, la création d'histogrammes ou l'exécution de requêtes imbriquées. Pour plus d'informations, consultez Agrégation.