Globale aktive Tabellen mit APIs ändern

In einer globalen aktiven Tabelle kann das Schema der Tabelle nicht geändert werden.

Sie können keine neuen Felder hinzufügen oder vorhandene Felder aus einer globalen aktiven Tabelle entfernen. Wenn Sie den Grenzwert für die Lese- oder Schreibkapazität 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 Replikatbereiche der Tabelle angewendet.

Globale aktive Tabelle ändern

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

  • Leseeinheiten: Ändern Sie den Wert der Leseeinheiten eines regionalen Tabellenreplikats.
  • Schreibeinheiten: Ändern Sie den Wert der Schreibeinheiten eines regionalen Tabellenreplikats.
  • capacity-mode: Ändern Sie den Kapazitätsmodus (von On Demand in Provisioning oder umgekehrt) eines regionalen Tabellenreplikats.
  • Tabellengröße: Ändern Sie die Speicherkapazität der Tabelle in allen regionalen Replikaten.
Ändern der Tabellengrenzwerte (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);
Ändern des Kapazitätsmodus eines regionalen Tabellenreplikats von der bereitgestellten in die On-Demand-Kapazität:
// 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 globalen aktiven 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));
Mit DropReplicaRequest() können Sie ein regionales Replikat aus einer vorhandenen globalen aktiven Tabelle löschen. Wenn alle regionalen Replikate gelöscht werden, wird die Global Active-Tabelle 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 über- und untergeordneten Tabellen löschen.