Modifica di tabelle attive globali mediante API

In una tabella Attivo globale, lo schema della tabella non può essere modificato.

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

Modifica di una tabella attiva globale

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

Modifica dei limiti di una 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 di tabella regionale dalla capacità 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 Attivo globale 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: per comprendere la dipendenza durante l'eliminazione di una replica di una tabella padre, vedere Eliminazione delle repliche delle tabelle padre-figlio.

Argomenti correlati