Modifica delle tabelle attive globali mediante le interfacce API

In una tabella Global Active non è possibile modificare lo schema della tabella.

Impossibile aggiungere nuovi campi o rimuovere campi esistenti da una tabella Attiva globale. La modifica del limite di capacità di lettura o di scrittura in una tabella Global Active applica le modifiche solo all'area in cui viene avviata la modifica. Tuttavia, la modifica della capacità di storage o il valore TTL predefinito a livello di tabella applica le modifiche a tutte le aree di replica della tabella.

Modifica di una tabella attiva globale

Gli utenti possono utilizzare la richiesta di tabella esistente (TableRequest()) per aggiornare quanto segue in una tabella attiva globale:

  • read-units: modificare il valore delle unità di lettura di una replica della tabella regionale
  • unità di scrittura: modificare il valore delle unità di scrittura di una replica della tabella regionale.
  • capacity-mode: modificare la modalità di capacità (da on-demand a provisioning eseguito o viceversa) di una replica di tabella regionale.
  • dimensione tabella: modifica la capacità di storage della tabella in tutte le repliche regionali.
Modifica dei limiti della tabella (unità di lettura, unità di scrittura e capacità di storage) di una replica della tabella regionale. La capacità di storage viene modificata in tutte le repliche regionali.
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);
Modifica della modalità di capacità di una replica della tabella regionale da quella di cui è stato eseguito il provisioning alla capacità su richiesta:
// 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);
È inoltre possibile aggiungere una replica regionale di una tabella Global Active esistente utilizzando 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));
È possibile eliminare una replica regionale da una tabella Global Active esistente utilizzando DropReplicaRequest(). Quando tutte le repliche regionali vengono eliminate, la tabella Global Active diventa una tabella 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);

Nota

Vedere Eliminazione delle repliche delle tabelle padre-figlio per comprendere la dipendenza quando si elimina una replica di una tabella padre.