更新表配置

您可以使用 UpdateTable 接口修改表的配置信息(例如数据生命周期、最大版本数、有效版本偏差等)和 Stream 配置。您还可以为 CU 模式(原按量模式)下高性能型实例中数据表更新预留读写吞吐量。

前提条件

接口

/**
 * 更新一个数据表,包括数据表的配置信息、Stream配置和预留读写吞吐量。
 * 此API可以用来上调或者下调数据表的预留读写吞吐量。
 * @api
 * @param [] $request 请求参数。
 * @return [] 请求返回。 
 * @throws OTSClientException 当参数检查出错或服务端返回校验出错时抛出异常。
 * @throws OTSServerException 当OTS服务端返回错误时抛出异常。
 */
public function updateTable(array $request);           

参数

请求信息

请求参数

参数

说明

table_name

数据表名称。

table_options

数据表的配置信息。更多信息,请参见数据版本和生命周期

配置信息包括如下内容:

  • time_to_live:数据生命周期,即数据的过期时间。当数据的保存时间超过设置的数据生命周期时,系统会自动清理超过数据生命周期的数据。

    单位为秒。

    说明
    • 如果需要使用索引,则数据生命周期必须设置为 -1(数据永不过期)。

    • 超过数据生命周期的过期数据为无效数据,即使系统还未删除数据,用户已无法读取对应数据。

      • 当调小数据生命周期时,可能会有数据过期,系统会异步删除对应过期数据。

      • 当调大数据生命周期时,如果系统还未删除在旧的数据生命周期之外的以前版本的数据,且对应版本数据在新设的数据生命周期中,则对应版本的数据可以重新读取。

  • max_versions:最大版本数,即属性列能够保留数据的最大版本个数。当属性列数据的版本个数超过设置的最大版本数时,系统会自动删除较早版本的数据。

    说明
    • 如果需要使用索引,则最大版本数必须设置为 1。

    • 超过最大版本数的数据版本为无效数据,即使系统还未删除数据,用户已无法读取对应数据。

      • 当调小最大版本数时,如果数据版本个数超过新设的最大版本数,系统会异步删除较早版本的数据。

      • 当调大最大版本数时,如果系统还未删除超过旧的最大版本数的对应版本数据,且对应版本数据在新设的最大版本数范围中,则对应版本的数据可以重新读取。

  • deviation_cell_version_in_sec:有效版本偏差,即写入数据的时间戳与系统当前时间的偏差允许最大值。只有当写入数据所有列的版本号与写入时间的差值在数据有效版本偏差范围内,数据才能成功写入。

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

    单位为秒。

  • allow_update:是否允许 UpdateRow 相关更新写入操作。默认值为 true,表示允许 UpdateRow 相关更新写入操作;当设置 allow_update 为 false 时,表示禁止 UpdateRow 相关更新写入操作。

reserved_throughput

为数据表配置预留读吞吐量或预留写吞吐量。

说明

ReservedThroughput 的调整有时间间隔限制,目前为 1 分钟。

CU 模式下高性能型实例中的数据表支持此功能;其他类型实例中的数据表的预留读/写吞吐量只能设置为 0,不允许预留。

默认值为 0,即完全按量计费。

单位为 CU。

  • 当预留读吞吐量或预留写吞吐量大于 0 时,表格存储会根据配置为数据表预留相应资源,且数据表创建成功后,将会立即按照预留吞吐量开始计费,超出预留的部分进行按量计费。详情请参见计费概述

  • 当预留读吞吐量或预留写吞吐量设置为 0 时,表格存储不会为数据表预留相应资源。

stream_spec

Stream相关设置(可选配置)。

  • enable_stream:数据表是否打开 Stream。

  • expiration_time:Stream 数据的过期时间,较早的修改记录将会被删除,单位为小时。

    只有当设置 enable_stream 为 true 时才能设置此参数。

请求格式

$result = $client->updateTable([
    'table_name' => '<string>',         //设置数据表名称,必须设置。
    'reserved_throughput' => [         
        'capacity_unit' => [
            'read' => <integer>, 
            'write' => <integer>
        ]
    ],
    'table_options' => [ 
        'time_to_live' => <integer>,   
        'max_versions' => <integer>,    
        'deviation_cell_version_in_sec' => <integer>  
    ],
    'stream_spec' => [
        'enable_stream' => true || false,
        'expiration_time' => <integer>
    ]
]);    

响应信息

响应参数

参数

说明

capacity_unit_details

数据表的预留读/写吞吐量配置详情,包括如下内容:

  • capacity_unit 表示数据表的预留读/写吞吐量配置信息,与计费相关。

    • read:预留读吞吐量

    • write:预留写吞吐量

  • last_increase_time:最近一次上调该数据表的预留读/写吞吐量设置的时间,使用 UTC 秒数表示。

  • last_decrease_time:最近一次下调该数据表的预留读/写吞吐量设置的时间,使用 UTC 秒数表示。

table_options

数据表的配置信息,包含 time_to_live、max_versions 和 deviation_cell_version_in_sec 配置,和请求时一致。

stream_details

数据表的 Stream 信息,包括如下内容:

  • enable_stream:数据表是否打开 Stream。

  • stream_id:数据表的 Stream ID。

  • expiration_time:Stream 的过期时间,较早的修改记录将会被删除,单位为小时。

  • last_enable_time:Stream 的打开的时间。

结果格式

 [
    'capacity_unit_details' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ],
        'last_increase_time' => <integer>,
        'last_decrease_time' => <integer>
    ],
    'table_options' => [
        'time_to_live' => <integer>,
        'max_versions' => <integer>,
        'deviation_cell_version_in_sec' => <integer>
    ],
    'stream_details' => [
        'enable_stream' => true || false,
        'stream_id' => '<string>',
        'expiration_time' => <integer>,
        'last_enable_time' => <integer>
    ]
]       

示例

更新 CU 模式下高性能型实例中数据表的预留吞吐量

以下示例用于更新数据表的预留读吞吐量为 1,预留写吞吐量为 2。

$result = $client->updateTable([
    'table_name' => 'SampleTable',
    'reserved_throughput' => [         
        'capacity_unit' => [
            'read' => 1,            //可以单独更新预留读吞吐量或者预留写吞吐量。
            'write' => 2
        ]
    ]
]);           

更新数据表的生命周期

以下示例用于更新数据表的数据生命周期为一天(即 86400 秒),最大版本数为 2, 有效版本偏差为 10 秒。

$result = $client->updateTable([
    'table_name' => 'SampleTable',
    'table_options' => [ 
        'time_to_live' => 86400,   
        'max_versions' => 2,    
        'deviation_cell_version_in_sec' => 10  
    ]
]);            

更新数据表的 Stream

以下示例用于打开数据表的 Stream,并设置过期时间为 24 小时。

$result = $client->updateTable([
    'table_name' => 'SampleTable',
    'stream_spec' => [
        'enable_stream' => true,
        'expiration_time' => 24
    ]
]);            

相关文档

  • 关于 API 说明的更多信息,请参见 UpdateTable。详细代码请参见 UpdateTable@GitHub

  • 如果要查看更新后的表配置信息,您可以通过查询表的描述信息实现。具体操作,请参见查询表描述信息

  • 如果要读写表中数据,您可以通过调用读写数据接口实现。具体操作,请参见基础数据操作