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

注意:

要了解删除父表的副本时的相关性,请参见 Dropping replicas of parent-child tables