使用 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);
注:要了解删除父表副本时的相关性,请参阅删除父子表的副本。