使用UpdateTable接口可以更新指定数据表的配置信息、Stream配置以及高性能实例中的数据表的预留读/写吞吐量。

说明 API说明请参见UpdateTable

前提条件

  • 已初始化Client。具体操作,请参见初始化
  • 已创建数据表。具体操作,请参见创建数据表

接口

/**
 * 更新一个数据表,包括数据表的配置信息、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分钟。

    容量型实例中的数据表的预留读/写吞吐量只能设置为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>
        ]
    ]       

示例

  • 示例1

    更新数据表的预留读吞吐量为1,预留写吞吐量为2。

    $result = $client->updateTable([
        'table_name' => 'SampleTable',
        'reserved_throughput' => [         
            'capacity_unit' => [
                'read' => 1,            //可以单独更新预留读吞吐量或者预留写吞吐量。
                'write' => 2
            ]
        ]
    ]);           
  • 示例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  
        ]
    ]);            
  • 示例3

    打开数据表的Stream,并设置过期时间为24小时。

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