更新表配置

本文介绍如何通过 Go SDK 更新表的配置信息。

前提条件

初始化Tablestore Client

方法说明

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

UpdateTableRequest参数说明

  • TableName(必选)string:数据表名称。

  • TableOption(可选)*TableOption:表配置信息,包含以下参数。

    名称

    类型

    说明

    TimeToAlive(必选)

    int

    数据生命周期,单位为秒。

    • 设置为-1时表示数据永不过期,否则取值最低为86400(1天),超出生命周期的数据将会被自动清除。

    • 如果要使用多元索引或二级索引功能,必须将数据生命周期设置为-1,或者将AllowUpdate参数设置为false。

    MaxVersion(必选)

    int

    最大版本数。

    • 如果要使用多元索引或二级索引,最大版本数必须设置为1。

    DeviationCellVersionInSec(可选)

    int64

    有效版本偏差,单位为秒。

    • 写入数据的时间戳与系统当前时间的差值必须在有效版本偏差范围内,否则写入数据将会失败。

    • 属性列数据的有效版本范围为[max(数据写入时间-有效版本偏差, 数据写入时间-数据生命周期), 数据写入时间+有效版本偏差)

    AllowUpdate(可选)

    *bool

    是否允许更新。

    • 设置为false时,无法通过UpdateRow()方法更新数据。

  • StreamSpec(可选)*StreamSpecification:Stream配置信息,包含以下参数。

    名称

    类型

    说明

    EnableStream(可选)

    bool

    是否开启Stream,默认值为false。

    ExpirationTime(可选)

    int32

    Stream过期时间,表示增量日志过期时长。单位为小时,最大值为168(7天)。

    • EnableStream设置为true时,必须设置expirationTime。

  • ReservedThroughput(可选)*ReservedThroughput预留读写吞吐量,单位为CU,默认值为0,仅CU模式的高性能型实例可以设置为非零值且有效。

说明
  • 调用UpdateTable()方法时,必须设置TableOption、StreamSpec、ReservedThroughput中的至少一项。

  • 设置 TableOption 时,必须设置 TimeToAlive 和 MaxVersion 参数。

示例代码

以下示例代码用于修改test_table表的配置信息。

func UpdateTableSample(client *tablestore.TableStoreClient) {
    updateTableReq := new(tablestore.UpdateTableRequest)
    updateTableReq.TableName = "test_table"
    
    // 表配置信息
    updateTableReq.TableOption = new(tablestore.TableOption)
    // 设置数据生命周期,单位为秒
    updateTableReq.TableOption.TimeToAlive = 86400
    // 设置最大版本数
    updateTableReq.TableOption.MaxVersion = 3
    // 设置有效版本偏差,单位为秒
    updateTableReq.TableOption.DeviationCellVersionInSec = 86400
    // 设置是否允许更新
    updateTableReq.TableOption.AllowUpdate = proto.Bool(false)

    // 开启Stream信息,并设置Stream过期时间为7天
    updateTableReq.StreamSpec = new(tablestore.StreamSpecification)
    updateTableReq.StreamSpec.EnableStream = true
    updateTableReq.StreamSpec.ExpirationTime = 168
    
    // 设置预留读为0CU,预留写为0CU(仅CU模式高性能实例支持设置数据表的预留读写吞吐量为非零值)
    updateTableReq.ReservedThroughput = new(tablestore.ReservedThroughput)
    updateTableReq.ReservedThroughput.Readcap = 0
    updateTableReq.ReservedThroughput.Writecap = 0

    // 调用UpdateTable方法修改表配置
    _, err := client.UpdateTable(updateTableReq)
    if (err != nil) {
        fmt.Println("Failed to update table with error:", err)
    } else {
        fmt.Println("Update table finished.")
    }
}

相关文档

更新时序表配置