Global Table synchronise automatiquement les données entre plusieurs régions pour assurer la reprise après sinistre inter-régions. Utilisez Global Table lorsque vos activités inter-régions exigent un accès à faible latence, une haute disponibilité, des lectures et écritures depuis le réplica le plus proche, ainsi qu'un basculement en cas de sinistre.
Fonctionnement
Une Global Table s'appuie sur la technologie de réplication multi-régions de Tablestore pour établir des canaux de synchronisation des données entre des instances situées dans différentes régions. Lorsqu'une modification intervient dans une table d'une région, elle est automatiquement répliquée vers ses tables répliques dans les autres régions, garantissant ainsi la cohérence des données inter-régions. Les réplicas de table prennent en charge l'ajout et la suppression dynamiques sur différentes instances et régions.
Le processus de réplication s'exécute automatiquement en arrière-plan, sans intervention manuelle. Ce mécanisme permet d'atteindre un objectif de point de récupération (RPO) acceptable tout en assurant la cohérence des données, répondant ainsi aux besoins de reprise après sinistre et de continuité d'activité de la plupart des systèmes métier.
Au quotidien, les utilisateurs et les applications peuvent lire et écrire depuis le réplica le plus proche, ce qui réduit la latence d'accès. En cas de panne régionale ou de catastrophe majeure, telle qu'une interruption de service d'un centre de données ou une catastrophe naturelle, vous pouvez rapidement initier un basculement de reprise après sinistre en vous appuyant sur plusieurs réplicas afin de reconstruire les applications et les données critiques, garantissant ainsi la continuité de l'activité.

Global Table offre les fonctionnalités suivantes :
Reprise après sinistre inter-régions — Répliques de table inter-régions. En cas de panne au niveau d'une région, les réplicas situés dans d'autres régions peuvent continuer à fournir le service.
Accès à faible latence — Les utilisateurs ou les applications peuvent lire et écrire depuis le réplica le plus proche, réduisant ainsi la latence des opérations.
Cohérence à terme — Utilise un modèle de cohérence à terme. Plusieurs réplicas sont synchronisés de manière asynchrone et les données deviennent cohérentes à terme.
Résolution automatique des conflits — Le système utilise l'algorithme LWW (Last Write Wins) pour résoudre automatiquement les conflits d'écriture simultanés entre les régions.
Modes de synchronisation
Une Global Table prend en charge deux modes de synchronisation. Sélectionnez le mode lors de la création de la Global Table.
Mode actif-passif — Seul le réplica principal accepte les écritures via son endpoint d'instance. Tous les autres réplicas sont en lecture seule, sauf pendant un basculement actif-passif. Utilisez ce mode pour la reprise après sinistre inter-régions et pour augmenter la capacité de lecture grâce à des réplicas en lecture seule.
Mode actif-actif — Plusieurs réplicas acceptent les écritures via leurs endpoints d'instance respectifs. Définissez le mode lecture/écriture pour chaque instance de destination. Utilisez ce mode lorsque vous écrivez dans plusieurs régions et avez besoin d'un jeu de données global. Les deux modes utilisent la cohérence à terme : les réplicas se synchronisent de manière asynchrone et les données deviennent cohérentes à terme. En mode actif-actif et lors d'un basculement actif-passif, les écritures simultanées sur la même ligne sont résolues par l'algorithme LWW. Pour plus d'informations, consultez Limites.
Scénarios
Global Table convient aux scénarios métier qui exigent une haute disponibilité, des lectures et écritures inter-régions à faible latence, ainsi qu'une reprise après sinistre inter-régions. Voici quelques scénarios typiques :
Sauvegarde inter-régions — En cas de défaillance de la région principale, basculez vers la région secondaire pour continuer à fournir des services de lecture et garantir la continuité de l'activité. Par exemple, les tables utilisateur principale et secondaire d'un système e-commerce sont stockées dans Tablestore dans les régions Chine (Hangzhou) et Chine (Beijing). Si la région Chine (Hangzhou) tombe en panne, la région Chine (Beijing) continue de fournir des services de requête. Mode recommandé : actif-passif.
Écriture dans une région, lecture depuis plusieurs régions — Écrivez les données dans la région la plus proche et lisez-les depuis le réplica le plus proche dans les autres régions. Cette approche est idéale pour accélérer l'accès distant. Par exemple, les écritures principales d'un service sont dirigées vers la région Chine (Hangzhou), et des réplicas en lecture seule sont déployés dans les régions Chine (Beijing) et Chine (Shanghai) pour répondre à la demande de lectures inter-régions à faible latence. Mode recommandé : actif-passif avec réplicas en lecture seule.
Écriture dans plusieurs régions, lecture globale — L'écriture dans plusieurs régions crée un jeu de données global et permet des lectures avec cohérence à terme. Cela convient aux scénarios nécessitant l'accès à un jeu de données global, tels que la distribution inter-régions des profils d'utilisateurs de jeux vidéo et les systèmes de messagerie sociale. Mode recommandé : actif-actif.
Limites
Vérifiez les limites suivantes avant de créer une Global Table. Certaines limites déterminent si la création d'une Global Table peut aboutir. Pour plus d'informations, consultez Limites.
Régions prises en charge — Global Table est disponible dans les régions Chine (Hangzhou), Chine (Shanghai), Chine (Qingdao), Chine (Beijing), Chine (Zhangjiakou), Chine (Hohhot), Chine (Ulanqab), Chine (Shenzhen), Chine (Guangzhou) et Chine (Chengdu). Pour des raisons de conformité des données et autres, vous ne pouvez pas créer de Global Table entre des régions situées dans différents pays. Pour connaître les régions prises en charge par Global Table, consultez Régions prises en charge.
Types de table — Seules les tables de données sont prises en charge. La synchronisation inter-régions des tables de séries temporelles, des index de recherche et des index secondaires n'est pas prise en charge.
Nombre de réplicas — Une seule Global Table prend en charge jusqu'à 10 régions.
Latence de synchronisation — Le RPO de synchronisation est généralement de quelques secondes, selon les régions, les conditions réseau et le volume de données. Le service ne fournit aucune garantie de fiabilité concernant la latence de transmission des données.
Configuration immuable — Vous ne pouvez pas modifier les propriétés d'une Global Table, telles que la configuration TTL ou les colonnes prédéfinies.
Tables en mode colonne — Les tables de données existantes sont créées en mode colonne par défaut et ne peuvent pas être directement converties en Global Table.
Recréation d'une Global Table — Lorsque vous utilisez la fonctionnalité Global Table une seconde fois, les tables dupliquées existantes ne peuvent pas rétablir la relation de synchronisation. Vous devez d'abord supprimer les index de recherche et les index secondaires, puis supprimer la table, et enfin créer une Global Table. Une deuxième utilisation fait référence au scénario où une table de données qui faisait précédemment partie d'une Global Table, mais dont la relation de synchronisation a été supprimée, est à nouveau créée en tant que Global Table.
Risque d'écrasement des données — Lors des écritures quotidiennes en mode actif-actif et pendant un basculement actif-passif, les écritures synchrones et les écritures utilisateur peuvent modifier la même ligne de données simultanément. La ligne ayant le numéro de version le plus élevé écrase celle ayant le numéro de version le plus faible (LWW), et les données issues de l'écriture de version inférieure sont écrasées ou ignorées.
Prérequis
Créez des instances à la fois dans la région principale et dans chaque région de réplica cible. Pour obtenir des instructions, consultez Créer une instance.
La table de base respecte les exigences de configuration de Global Table. Pour utiliser une table de données existante comme table de base, assurez-vous qu'elle répond aux exigences indiquées dans le tableau suivant.
| Paramètre | Valeur requise pour une Global Table | Description |
| Durée de vie | -1 | Les données n'expirent jamais. |
| Versions max. | 1 | Le nombre maximal de versions est 1. |
| Versionnement des lignes | Activé | Définit la table en mode ligne. Vous ne pouvez pas désactiver Enable Row Versioning après l'avoir activé. Après avoir activé le versionnement des lignes, les limitations suivantes s'appliquent : une seule ligne prend en charge jusqu'à 256 colonnes ; vous ne pouvez pas spécifier manuellement un numéro de version lors de l'écriture des données (le système le génère automatiquement) ; et chaque opération Update lit d'abord la version actuelle de la ligne, ce qui introduit une petite charge de lecture supplémentaire. |
| Décalage de version max. | MaxInt32 (2147483647) | Définit le décalage de version sur la valeur Int32 maximale, ce qui signifie qu'il n'y a aucune limite. |
Les tables existantes en mode non-ligne ne permettent pas de créer des Global Tables. Pour utiliser une telle table, contactez le support technique pour activer cette fonctionnalité.
Créer une Global Table
Créez la table de base dans la région principale, puis convertissez-la en Global Table avec des régions de réplica dans les régions cibles.
Étape 1 : Préparer la table de base
Dans la région principale, créez une table de données qui servira de base à la Global Table.
-
Accédez à la page Instance Management.
Connectez-vous à la console Tablestore.
Dans la barre de navigation supérieure, sélectionnez un groupe de ressources et une région.
Sur la page Overview, cliquez sur un alias d'instance, ou cliquez sur Manage Instance dans la colonne Actions de l'instance.
Sous l'onglet Instance Details, cliquez sur Create Table.
Dans la boîte de dialogue Create Table, définissez le Data Table Name et la Primary Key.
Activez l'interrupteur Advanced Settings, puis activez l'interrupteur Quick Set Global Table Dependency. Le système configure automatiquement les dépendances requises pour la Global Table, comme décrit dans Prérequis.
Pour Data Table Name, saisissez
exampletable. Dans la section Primary Key, ajoutez deux clés primaires : définissez le nom de la première clé primaire suruser_id, définissez le type sur String et configurez-la comme clé de partition ; définissez le nom de la deuxième clé primaire surregion_idet le type sur String.Cliquez sur Create.
Étape 2 : Créer la Global Table
Convertissez la table de base en Global Table et ajoutez des régions de réplica. Après la création de la Global Table, le système crée automatiquement les tables de données correspondantes dans les régions de réplica sélectionnées et établit des canaux de synchronisation des données.
Dans la région principale, sous l'onglet Tables, cliquez sur Create Global Table dans la colonne Actions de la table de base. Vous pouvez également cliquer sur le nom de la table de données, accéder à l'onglet Global Table, puis cliquer sur Create Sync Relationship pour continuer.
Dans la boîte de dialogue Create Global Table, définissez les paramètres en fonction du mode de synchronisation choisi.
Si une table de données portant le même nom que la Global Table existe déjà dans l'instance de destination, la création de la Global Table échoue.
Configurer le mode actif-passif
Dans la zone Current Resource, définissez Global Sync Mode sur Primary/Standby Mode (Cross-Region Replication).
Dans la zone Target Table, sélectionnez la région et le nom de l'instance de l'instance de destination. Vous pouvez ajouter plusieurs instances de destination en une seule fois. Après avoir créé la Global Table, le système crée automatiquement les tables cibles dans les instances des régions sélectionnées, avec les mêmes noms que la table de base actuelle. L'autorisation de lecture/écriture de l'instance de destination est Read-only.
Configurer le mode actif-actif
Dans la zone Current Resource, définissez Global Sync Mode sur Multi-Read Multi-Write (Cross-Region Replication).
Dans la zone Target Table, sélectionnez la région, le nom de l'instance et le mode de lecture/écriture de l'instance de destination. Vous pouvez ajouter plusieurs instances de destination en une seule fois. Après avoir créé la Global Table, le système crée automatiquement les tables cibles dans les instances des régions sélectionnées, avec les mêmes noms que la table de base actuelle.
Cliquez sur OK.
Pour confirmer le succès de l'opération, dans la boîte de dialogue Create Global Table, cliquez sur View List. La nouvelle Global Table apparaît alors sous l'onglet Global Table.
Étape 3 : Vérifier et utiliser la Global Table
Après la création de la Global Table, vérifiez la synchronisation des données en effectuant des tests de lecture et d'écriture de base.
-
Écrire des données de test — Écrivez des données de test dans la table de données de la région principale.
Dans la région principale, sous l'onglet Tables, cliquez sur Query dans la colonne Actions de la table de base.
Sous l'onglet Query Data, cliquez sur Insert.
Dans la boîte de dialogue Insert, définissez les clés primaires, cliquez sur Add Column pour ajouter un attribut, puis cliquez sur OK.
Vérifier la synchronisation des données — Attendez 1 à 3 secondes, puis interrogez les données dans une région de réplica.
Dans la région principale, sous l'onglet Tables, cliquez sur Query dans la colonne Actions de la table de base.
Sous l'onglet Global Table de la table de base, cliquez sur le nom d'une table de réplica dans une région de réplica.
Sous l'onglet Query Data de la table de réplica, affichez les données synchronisées depuis la table de base. La table de réplica contient les mêmes données que celles que vous avez écrites dans la région principale, ce qui confirme que la synchronisation a réussi.
Lectures et écritures Global Table
Les opérations de lecture des données et d'écriture des données sur les tables de réplica d'une Global Table sont identiques à celles d'une table de données standard.
Pour les lectures réelles, obtenez l'endpoint de l'instance où se trouve la table de réplica correspondante.
En mode actif-passif, seul le réplica principal autorise les écritures via son endpoint d'instance. Tous les autres réplicas sont en lecture seule, sauf pendant un basculement actif-passif.
En mode actif-actif, tous les réplicas accessibles en écriture autorisent les écritures via leurs endpoints d'instance respectifs.
En mode actif-actif, les écritures synchrones et les écritures utilisateur peuvent modifier la même ligne simultanément. La ligne ayant le numéro de version le plus élevé écrase l'écriture de version inférieure (LWW), et les données de version inférieure sont ignorées. Pour plus d'informations, consultez Limites.
Gérer une Global Table
Basculer le réplica principal (mode actif-passif)
Le basculement du réplica principal s'applique uniquement aux Global Tables en mode actif-passif. En mode actif-passif, si la table de réplica principale échoue ou si vous devez changer la région d'écriture, définissez une autre table de réplica comme nouveau réplica principal pour continuer à fournir des services.
Pendant un basculement, la table de réplica principale actuelle et la table de réplica sélectionnée comme nouvelle principale sont toutes deux lisibles et inscriptibles, ce qui crée un risque d'incohérence des données. Confirmez que les données sont cohérentes avant de basculer le chemin d'écriture de l'application. Les écritures simultanées sont résolues par l'algorithme LWW. Pour plus d'informations, consultez Limites.
Sous l'onglet Global Table, cliquez sur Switch to Primary Table dans la colonne Actions de la table passive.
Dans la boîte de dialogue Modify Primary/Standby Relationship, soumettez la tâche de basculement de la table principale pour démarrer la synchronisation des données. La synchronisation se poursuit pendant une période qui dépend de facteurs tels que le volume de données et les ressources système.
À l'étape Data Synchronization, cliquez sur Start Data Synchronization.
Dans la boîte de dialogue Primary/Standby Table Switch, cliquez sur View Details pour vérifier l'état du RPO de la synchronisation.
Confirmez que les données des tables principale et passive sont cohérentes, puis cliquez sur Confirm Write Endpoint Switch dans la colonne Sync Mode de n'importe quelle table.
À l'étape Application Layer Write Path Switch, confirmez que la synchronisation est terminée et que vous avez modifié tous les endpoints d'écriture de votre application pour pointer vers l'endpoint de la nouvelle principale. Cliquez ensuite sur Complete Switch.
Après le basculement du chemin d'écriture, confirmez le basculement de la table principale dès que possible. Cela désactive la capacité d'écriture de la table principale d'origine. Cliquez sur View dans la colonne Sync Mode de n'importe quelle table.
À l'étape Confirm Switch, cliquez sur Switch Primary Table. Après le succès du basculement, le réplica principal d'origine fournit une capacité de lecture seule, et le nouveau réplica principal fournit une capacité de lecture et d'écriture.
Pour annuler le basculement de table actif-passif, cliquez sur Cancel Primary Table Switch, effectuez la confirmation d'annulation, puis cliquez sur OK dans la boîte de dialogue de confirmation.
Ajouter une région globale
Ajoutez une ou plusieurs régions globales à une Global Table.
Sous l'onglet Global Table, cliquez sur Add Global Region dans la colonne Actions d'une table de réplica.
Dans la boîte de dialogue Add Global Region, sélectionnez la région et le nom de l'instance de l'instance de destination. Pour ajouter plusieurs régions globales, cliquez sur Add Instance et continuez.
Cliquez sur OK.
Si une table de données portant le même nom que la Global Table existe déjà dans l'instance de destination, l'ajout de la région globale échoue.
Modifier les instances cibles (mode actif-actif)
Modifiez les instances cibles d'une Global Table pour ajouter une instance cible ou changer le mode de lecture/écriture d'une instance existante.
Sous l'onglet Global Table, cliquez sur Edit dans la colonne Actions d'une table de réplica.
-
Dans la boîte de dialogue Edit Global Table, effectuez l'une des opérations suivantes :
Ajouter une instance cible — Sélectionnez la région, le nom de l'instance et le mode de lecture/écriture de l'instance de destination. Pour ajouter plusieurs régions globales, cliquez sur Add Instance et continuez.
Modifier le mode de lecture/écriture d'une instance — Sélectionnez le mode de lecture/écriture d'une instance existante.
Cliquez sur OK.
Si une table de données portant le même nom que la Global Table existe déjà dans l'instance de destination, l'ajout de la région globale échoue.
Supprimer la relation de synchronisation
La suppression de la relation de synchronisation arrête la synchronisation des données pour une table de réplica. Pour arrêter la synchronisation pour toutes les régions d'une Global Table, supprimez la relation de synchronisation pour chaque table de réplica séparément. Pour supprimer la synchronisation pour une région spécifique uniquement, effectuez l'opération uniquement sur la table de réplica de cette région.
En mode actif-passif, vous devez d'abord supprimer les tables passives, puis le réplica principal.
Mode actif-passif
Sous l'onglet Global Table, utilisez l'une des méthodes suivantes pour commencer à supprimer la relation de synchronisation :
Supprimer un seul réplica — Cliquez sur Remove Sync dans la colonne Actions d'une table de réplica.
Supprimer plusieurs réplicas par lot — Sélectionnez les tables de réplica à supprimer, puis cliquez sur Remove Sync sous la liste.
Avant de supprimer une table de données, vous devez supprimer manuellement ses index de recherche associés. Sinon, la suppression de la table de données échoue. Dans la boîte de dialogue de confirmation, cliquez sur OK.
Mode actif-actif
Sous l'onglet Global Table, cliquez sur Unsync dans la colonne Actions d'une table de réplica. Dans la boîte de dialogue de confirmation, cliquez sur OK.
Le système commence à supprimer la relation de synchronisation. Attendez que le processus soit terminé.
Intégration développeur
Vous pouvez utiliser les Global Tables via le Java SDK.
Bonnes pratiques
Suivez ces bonnes pratiques lorsque vous appliquez Global Table à un environnement de production :
Créer une Global Table pour une table existante — Les API de lecture et d'écriture d'origine restent inchangées. Les données sont automatiquement synchronisées vers le nouveau réplica, qui peut partager la charge de lecture.
Créer une Global Table à partir de zéro — Finalisez le schéma de la table, créez la table de base, puis créez la Global Table. Vous ne pouvez pas modifier le schéma d'une Global Table, alors assurez-vous que la table de base passe tous les tests avant de créer la Global Table.
Lier dynamiquement un nouveau réplica — Vous pouvez ajouter dynamiquement de nouveaux réplicas lors de l'utilisation d'une Global Table sans affecter les opérations de lecture et d'écriture des réplicas existants. Le nouveau réplica contient les dernières données de la Global Table.
Dissocier un réplica existant — Si une table de réplica n'est plus nécessaire, dissociez-la d'abord. Après la dissociation, le réplica ne synchronise plus les données des autres réplicas, mais la table et ses données sont conservées. Pour supprimer le réplica, supprimez-le manuellement après l'avoir dissocié.
Choisir une combinaison appropriée de régions — Sélectionnez des régions principales et secondaires appropriées en fonction de la distribution des utilisateurs et des exigences métier.
Planifier le basculement de la région principale — En mode actif-passif, lorsque la région principale n'est pas disponible, sélectionnez d'abord une nouvelle table de réplica principale dans la console, puis basculez le chemin d'écriture de la couche application. Une fois que les données sont synchronisées vers la nouvelle table de réplica principale, basculez-la en tant que table de réplica principale. Une brève interruption d'écriture peut se produire pendant le basculement, il est donc recommandé de mettre en œuvre un mécanisme de nouvelle tentative côté métier. Gérez l'ordre et le timing des basculements d'application et de service pour éviter toute perte de données.
Facturation
Les Global Tables engendrent des frais pour le stockage des données, les lectures de données, les écritures de données et le trafic de réplication inter-régions.
La méthode de facturation pour le stockage des données et les opérations de lecture/écriture sur chaque table de réplica est identique à celle d'une table de données standard. Pour plus d'informations, consultez Aperçu de la facturation.
Les frais suivants s'appliquent :
Frais de stockage des données : Chaque table de réplica stocke les données indépendamment. Vous êtes facturé séparément pour la quantité réelle de données stockées dans la région de chaque table.
Frais de lecture des données : Couvre les opérations de lecture locales sur toutes les tables de réplica.
Frais d'écriture des données : Les opérations d'écriture ne peuvent être effectuées que sur les réplicas accessibles en écriture. Des frais d'écriture sont facturés uniquement sur la table dans laquelle les données sont directement écrites. Les tables de réplica qui synchronisent les données via une réplication asynchrone n'engendrent pas de frais d'écriture.
-
Frais de trafic de réplication inter-régions : Facturés pour le trafic de transfert de données inter-régions généré lorsque les données sont répliquées de manière asynchrone vers chaque table de réplica.
ImportantLes frais de trafic de réplication inter-régions pour chaque réplica sont calculés séparément. Les frais sont facturés à l'instance à partir de laquelle les données sont extraites.
FAQ
Comment modifier la configuration d'une Global Table, par exemple en définissant le TTL ou en ajoutant des colonnes personnalisées ?
Actuellement, vous ne pouvez pas modifier directement la configuration d'une Global Table. Pour modifier la configuration, dissociez d'abord complètement la Global Table, effectuez les modifications, puis recréez la Global Table. Avant de recréer la Global Table, dirigez toutes les opérations de lecture et d'écriture vers le réplica principal pour éviter d'affecter les lectures et écritures de la couche supérieure, puis supprimez les autres réplicas.
Comment supprimer une table de réplica ?
Dissociez d'abord la table de réplica de la Global Table. Une fois la dissociation réussie, supprimez la table de réplica de la liste des tables de l'instance dans la console.
En mode actif-passif, comment lire depuis une table de réplica d'une instance non principale ?
Sous l'onglet Global Table de la table de base dans l'instance principale, affichez le nom de l'instance de la table de réplica associée, puis utilisez l'endpoint de cette instance pour lire les données.
En mode ligne, si l'opération UpdateRow met à jour des valeurs dans différentes colonnes de la même ligne dans différentes régions (supposons que a met à jour en premier et b met à jour plus tard), à quoi ressemblent les données de la ligne ?
Les données de la ligne sont cohérentes à terme. La valeur finale correspond aux données de la ligne entière sur le réplica de b. Les données spécifiques peuvent correspondre à l'un des deux cas suivants :
Si la table de réplica actuelle n'a pas encore synchronisé la mise à jour a avant la mise à jour b, la ligne contient la valeur de b mais pas la valeur de a.
Si la table de réplica actuelle a déjà synchronisé la mise à jour a avant la mise à jour b, la ligne contient à la fois les valeurs de b et de a.