更新表配置

更新时间:
复制 MD 格式

Go SDK 可更新宽表模型数据表的数据生命周期、最大版本数、有效版本偏差、更新权限、Stream 和预留读写吞吐量配置。

前提条件

安装Tablestore Go SDK并初始化客户端。

功能说明

调用 UpdateTable 更新指定数据表的表属性、Stream 或预留读写吞吐量。每次请求必须至少设置一类配置。

func (tableStoreClient *TableStoreClient) UpdateTable(request *UpdateTableRequest) (*UpdateTableResponse, error)

以下示例更新 example_table 的数据生命周期、最大版本数、有效版本偏差和更新权限。

request := &tablestore.UpdateTableRequest{
    TableName: "example_table",
    TableOption: &tablestore.TableOption{
        TimeToAlive:               86400,
        MaxVersion:                3,
        DeviationCellVersionInSec: 86400,
        AllowUpdate:               proto.Bool(false),
    },
}

_, err := client.UpdateTable(request)
if err != nil {
    log.Fatal(err)
}

参数说明

UpdateTableRequest 包含以下参数。

名称

类型

说明

TableName(必选)

string

数据表名称。

TableOption(可选)

*TableOption

要更新的表属性。

StreamSpec(可选)

*StreamSpecification

Stream 配置。

ReservedThroughput(可选)

*ReservedThroughput

预留读写吞吐量配置。仅 CU 模式的高性能型实例支持设置非零值。

TableOptionStreamSpecReservedThroughput 必须至少设置一个。

表配置

TableOption 包含以下参数。

名称

类型

说明

TimeToAlive(可选)

int

数据生命周期,单位为秒。设置为 -1 时数据永不过期;设置为其他值时,最小值为 86400(1 天),超出生命周期的数据将被自动清除。使用多元索引或二级索引时,需设置为 -1,或将 AllowUpdate 设置为 false

MaxVersion(可选)

int

每个属性列最多保留的版本数。使用多元索引或二级索引时必须设置为 1

DeviationCellVersionInSec(可选)

int64

有效版本偏差,单位为秒。写入数据的时间戳与系统当前时间的差值必须在有效版本偏差范围内。属性列数据的有效版本范围为 [max(数据写入时间-有效版本偏差, 数据写入时间-数据生命周期), 数据写入时间+有效版本偏差)

AllowUpdate(可选)

*bool

是否允许通过 UpdateRow 更新数据。设置为 false 时不允许更新数据。

重要

UpdateFullRow 只能在创建数据表时设置,不能通过 UpdateTable 修改。

Stream 配置

StreamSpec 的类型为 StreamSpecification,包含以下参数。

名称

类型

说明

EnableStream(必选)

bool

是否开启 Stream。

ExpirationTime(可选)

int32

增量日志的保留时长,单位为小时,最大值为 168(7 天)。EnableStream 设置为 true 时必须设置。

重要

修改 ExpirationTime 参数时,必须同时将 EnableStream 设置为 true。否则会导致现有数据通道不可用,并影响表中多元索引的数据同步。

预留读写吞吐量

ReservedThroughput 包含以下参数。

名称

类型

说明

Readcap(可选)

int

预留读吞吐量,单位为 CU,默认值为 0

Writecap(可选)

int

预留写吞吐量,单位为 CU,默认值为 0

场景示例

更新 Stream 配置

以下示例为 example_table 开启 Stream,并将增量日志保留时长设置为 168 小时。

request := &tablestore.UpdateTableRequest{
    TableName: "example_table",
    StreamSpec: &tablestore.StreamSpecification{
        EnableStream:   true,
        ExpirationTime: 168,
    },
}

_, err := client.UpdateTable(request)
if err != nil {
    log.Fatal(err)
}