Globale aktive Tabellen mit APIs ändern

In einer Tabelle "Global Active" kann das Schema der Tabelle nicht geändert werden.

Sie können keine neuen Felder hinzufügen oder vorhandene Felder aus einer Tabelle "Global aktiv" entfernen. Wenn Sie das Lesekapazitätslimit oder das Schreibkapazitätslimit in einer globalen aktiven Tabelle ändern, werden die Änderungen nur auf die Region angewendet, in der die Änderung initiiert wird. Wenn Sie jedoch die Speicherkapazität ändern oder den TTL-Standardwert auf Tabellenebene ändern, werden die Änderungen auf alle Replikatregionen der Tabelle angewendet.

Globale aktive Tabelle ändern

Benutzer können die vorhandene Tabellenanforderung (TableRequest()) verwenden, um Folgendes in einer globalen aktiven Tabelle zu aktualisieren:

Ändern der Tabellenlimits (Leseeinheiten, Schreibeinheiten und Speicherkapazität) eines regionalen Tabellenreplikats. Die Speicherkapazität wird in allen regionalen Replikaten geändert.

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);

Kapazitätsmodus eines regionalen Tabellenreplikats von bereitgestellter in On-Demand-Kapazität ändern:

// 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);

Sie können auch ein regionales Replikat einer vorhandenen Global Active-Tabelle mit AddReplicaRequest() hinzufügen.

/* 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));

Sie können ein regionales Replikat mit DropReplicaRequest() aus einer vorhandenen Global Active-Tabelle löschen. Wenn alle regionalen Replikate gelöscht werden, wird die Tabelle Global Active zu einer Singleton-Tabelle.

/* 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);

Hinweis: Informationen zur Abhängigkeit beim Löschen eines Replikats einer übergeordneten Tabelle finden Sie unter Replikate von übergeordneten/untergeordneten Tabellen löschen.

Verwandte Themen