通过控制台或者SDK设置多元索引生命周期。使用多元索引生命周期,您必须一直保持数据表UpdateRow更新写入操作为禁止状态。
使用控制台
禁用数据表UpdateRow更新写入操作。
在数据表的基本详情页签,单击修改表属性。
在修改表属性对话框,设置是否允许更新为否,然后单击确定。
设置多元索引生命周期。
禁用数据表UpdateRow更新写入操作后,您可以在创建多元索引时指定TTL或者为已有多元索引指定TTL。
创建多元索引时指定TTL
在数据表的索引管理页签,单击创建多元索引。
在创建索引对话框,设置索引名、数据生命周期和Schema生成方式,然后单击确定。
为已有多元索引指定TTL
在数据表的索引管理页签,单击目标多元索引操作列的索引详情。
在索引详情对话框,单击图标,修改数据生命周期,然后单击修改ttl。
单击确定。
多元索引的TTL和数据表的TTL是独立的。如果需要使用数据表TTL,请为数据表设置TTL。
在数据表的基本详情页签中基本信息区域,单击修改表属性。
在修改表属性对话框,根据需要设置数据生命周期,然后单击确定。
使用SDK
您可以通过Java SDK或者Go SDK使用生命周期管理。此处以Java SDK为例介绍数据生命周期的管理。
具体操作流程如下:
禁用数据表UpdateRow更新写入操作。
public void disableTableUpdate(SyncClient client) {
UpdateTableRequest updateTableRequest = new UpdateTableRequest(tableName);
TableOptions options = new TableOptions();
// 禁用数据表UpdateRow更新写入操作,请确保数据表无UpdateRow写入操作,避免影响业务。
options.setAllowUpdate(false);
updateTableRequest.setTableOptionsForUpdate(options);
client.updateTable(updateTableRequest);
}
设置多元索引生命周期。
禁用数据表UpdateRow更新写入操作后,您可以在创建多元索引时指定TTL或者为已有多元索引指定TTL。
创建多元索引时指定TTL
// 请使用5.12.0及以上版本的Java SDK。
public void createIndexWithTTL(SyncClient client) {
int days = 7;
CreateSearchIndexRequest createRequest = new CreateSearchIndexRequest();
createRequest.setTableName(tableName);
createRequest.setIndexName(indexName);
createRequest.setIndexSchema(indexSchema);
// 设置多元索引TTL。
createRequest.setTimeToLiveInDays(days);
client.createSearchIndex(createRequest);
}
为已有多元索引指定TTL
// 请使用5.12.0及以上版本的Java SDK。
public void updateIndexWithTTL(SyncClient client) {
int days = 7;
UpdateSearchIndexRequest updateSearchIndexRequest = new UpdateSearchIndexRequest(tableName, indexName);
// 更新多元索引TTL。
updateSearchIndexRequest.setTimeToLiveInDays(days);
client.updateSearchIndex(updateSearchIndexRequest);
}
多元索引的TTL和数据表的TTL是独立的。如果需要使用数据表TTL,请为数据表设置TTL。
public void updateTableTTL(SyncClient client) {
int days = 7;
UpdateTableRequest updateTableRequest = new UpdateTableRequest(tableName);
TableOptions options = new TableOptions();
options.setTimeToLiveInDays(days);
updateTableRequest.setTableOptionsForUpdate(options);
client.updateTable(updateTableRequest);
}