Modification des tables actives globales à l'aide d'API

Dans une table Global Active, le schéma de la table ne peut pas être modifié.

Vous ne pouvez pas ajouter de nouveaux champs ou supprimer des champs existants d'une table globale active. La modification de la limite de capacité de lecture ou d'écriture dans une table Global Active applique les modifications uniquement à la région où la modification est lancée. Toutefois, la modification de la capacité de stockage ou de la valeur de durée de vie par défaut au niveau table applique les modifications à toutes les régions de réplique de la table.

Modifier une table globale active

Les utilisateurs peuvent utiliser la demande de table existante (TableRequest()) pour mettre à jour les éléments suivants dans une table Global Active :

  • read-units : Modifiez la valeur des read-units d'une réplique de table régionale.
  • unités d'écriture : Modifiez la valeur des unités d'écriture d'une réplique de table régionale.
  • mode capacité : Modifiez le mode capacité (de sur demande à provisionné ou inversement) d'une réplique de table régionale.
  • Taille de table : Modifiez la capacité de stockage de la table dans toutes les répliques régionales.
Modification des limites de table (unités de lecture, unités d'écriture et capacité de stockage) d'une réplique de table régionale. La capacité de stockage est modifiée dans toutes les répliques régionales.
TableLimits limits = new TableLimits(40, 10, 5);
TableRequest treq = new TableRequest().setTableName( "<table_name>" ).setTableLimits(limits);
TableResult tres = handle.tableRequest(treq);
/* wait for completion of the operation */
tres.waitForCompletion(handle, 60000, 1000);
Modification du mode de capacité d'une réplique de table régionale de la capacité provisionnée à la capacité sur demande :
// Call the constructor to only set storage limit (for on-demand)
TableLimits limits = new TableLimits(10);
TableRequest treq = new TableRequest().setTableName("<table_name>").setTableLimits(limits);
TableResult tres = serviceHandle.tableRequest(treq);
tres.waitForCompletion(serviceHandle, 50000,3000);
Vous pouvez également ajouter une réplique régionale d'une table Global Active existante à l'aide de AddReplicaRequest().
/* add replica ca-toronto-1 */
System.output.println("Adding replica: " + region);
AddReplicaRequest addRepReq = new AddReplicaRequest()
                              .setTableName(tableName)
                              .setReplicaName(region);
res = handle.addReplica(addRepReq);
res.waitForCompletion(handle, 90000, 1000);
System.output.println("Added replica: " + region);
System.output.println("Table:\n" + JsonUtils.prettyPrint(res));
Vous pouvez supprimer une réplique régionale d'une table Global Active existante à l'aide de DropReplicaRequest(). Lorsque toutes les répliques régionales sont supprimées, la table Global Active devient une table singleton.
/* drop replica ca-montreal-1 */
System.output.println("\nDropping replica: " + region);
DropReplicaRequest dropRepReq = new DropReplicaRequest()
                               .setTableName(tableName)
                               .setReplicaName(region);
res = handle.dropReplica(dropRepReq);
res.waitForCompletion(handle, 60000, 500);
System.output.println("Dropped replica: " + region);

Note :

Voir Suppression de répliques de tables parent-enfant pour comprendre la dépendance lors de la suppression d'une réplique d'une table parent.