使用 API 修改全域作用中表格

在「全域作用中」表格中,無法變更表格的綱要。

您無法新增欄位或從「全域作用中」表格移除現有欄位。變更「全域作用中」表格中的讀取容量限制或寫入容量限制,只會將變更套用至起始變更的區域。不過,變更儲存容量或變更預設表格層次 TTL 值會將變更套用至表格的所有複本區域。

修改全域作用中表格

使用者可以使用現有的表格要求 (TableRequest()) 來更新「全域作用中」表格中的下列項目:

  • read-units:變更區域表格複本的讀取單位值
  • write-units: 變更區域表格複本的寫入單位值
  • capacity-mode:變更區域表格複本的容量模式 (從隨選變更為已佈建,反之亦然)。
  • 表格大小:變更所有區域複本中表格的儲存容量。
變更區域表格複本的表格限制 (讀取單位、寫入單位以及儲存容量)。所有區域複本的儲存容量變更。
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);
將區域表格複本的容量模式從佈建變更為隨選容量:
// 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);
您也可以使用 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));
您可以使用 DropReplicaRequest() 從現有的「全域作用中」表格刪除區域複本。刪除所有區域複本時,「全域作用中」表格會變成單一表格。
/* 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);

附註:

請參閱刪除父項 - 子項表格的複本,瞭解刪除父項表格複本時的相依性。