使用 Java SDK 更新宽表模型数据表的数据生命周期、最大版本数、有效版本偏差、更新权限、Stream 和预留读写吞吐量配置。
前提条件
安装Tablestore Java SDK并初始化客户端。
功能说明
调用 updateTable 方法更新指定数据表的表属性、Stream 或预留读写吞吐量。每次请求必须至少设置一类配置。更新 TableOptions 时,必须至少设置一项表属性。
public UpdateTableResponse updateTable(UpdateTableRequest request) throws TableStoreException, ClientException
以下示例更新 example_table 数据表的数据生命周期、最大版本数、有效版本偏差和更新权限。
UpdateTableRequest request = new UpdateTableRequest("example_table");
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(86400);
tableOptions.setMaxVersions(3);
tableOptions.setMaxTimeDeviation(86400L);
tableOptions.setAllowUpdate(false);
request.setTableOptionsForUpdate(tableOptions);
client.updateTable(request);
参数说明
UpdateTableRequest包含以下参数。
|
名称 |
类型 |
说明 |
|
tableName(必选) |
|
数据表名称。 |
|
tableOptionsForUpdate(可选) |
|
要更新的表属性。至少设置一项表属性。 |
|
streamSpecification(可选) |
|
Stream 配置。 |
|
reservedThroughputForUpdate(可选) |
|
预留读写吞吐量配置。仅 CU 模式的高性能型实例支持设置非零值。 |
tableOptionsForUpdate、streamSpecification 和 reservedThroughputForUpdate 必须至少设置一个。
表配置
tableOptionsForUpdate 的类型为 TableOptions,包含以下参数。
|
名称 |
类型 |
说明 |
|
timeToLive(可选) |
|
数据生命周期,单位为秒。设置为 |
|
maxVersions(可选) |
|
每个属性列最多保留的版本数。使用多元索引或二级索引时必须设置为 |
|
maxTimeDeviation(可选) |
|
有效版本偏差,单位为秒。写入数据的时间戳与系统当前时间的差值必须在有效版本偏差范围内。属性列数据的有效版本范围为 |
|
allowUpdate(可选) |
|
是否允许通过 |
updateFullRow只能在创建数据表时设置,不能通过updateTable方法修改。
Stream 配置
streamSpecification 的类型为 StreamSpecification,包含以下参数。
|
名称 |
类型 |
说明 |
|
enableStream(必选) |
|
是否开启 Stream。 |
|
expirationTime(可选) |
|
增量日志的保留时长,单位为小时,最大值为 |
预留读写吞吐量
reservedThroughputForUpdate 的类型为 ReservedThroughput,包含以下参数。
|
名称 |
类型 |
说明 |
|
capacityUnit(必选) |
|
预留读写吞吐量配置。 |
容量单元
reservedThroughputForUpdate.capacityUnit 的类型为 CapacityUnit,包含以下参数。
|
名称 |
类型 |
说明 |
|
readCapacityUnit(必选) |
|
预留读吞吐量,单位为 CU。 |
|
writeCapacityUnit(必选) |
|
预留写吞吐量,单位为 CU。 |
场景示例
更新 Stream 配置
以下示例为 example_table 数据表开启 Stream,并将增量日志的过期时间设置为 168 小时。
UpdateTableRequest request = new UpdateTableRequest("example_table");
request.setStreamSpecification(new StreamSpecification(true, 168));
client.updateTable(request);
更新预留读写吞吐量
仅 CU 模式的高性能型实例支持预留读写吞吐量。以下示例将 example_table 数据表的预留读吞吐量和预留写吞吐量都设置为 0 CU。
UpdateTableRequest request = new UpdateTableRequest("example_table");
ReservedThroughput reservedThroughput = new ReservedThroughput(0, 0);
request.setReservedThroughputForUpdate(reservedThroughput);
client.updateTable(request);