DescribeTable

API说明:DescribeTable

DescribeTable 接口可以查询表的结构信息(TableMeta)、配置信息(TableOptions)、预留读/写吞吐量的情况(ReservedThroughputDetails),stream设置信息(StreamDetails)。 TableMeta 和 TableOptions 在“建表”一节已经有过介绍,ReservedThroughputDetails 除了包含表的预留吞吐量的值外,还包括最近一次上调或者下调的时间。 StreamDetails 包含了stream的详细信息。

接口
    /**
     * 获取一个表的信息,包括主键设计以及预留读写吞吐量信息。
     * @api
     * @param [] $request 请求参数
     * @return [] 请求返回 
     * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
     * @throws OTSServerException 当OTS服务端返回错误时
     */
    public function describeTable(array $request); 
			
请求格式
$result = $client->describeTable([
     'table_name' => '<string>', // REQUIRED
]);
请求格式说明
  • table_name 表名。
结果格式
[
    'table_meta' => [
        'table_name' => '<string>',
        'primary_key_schema' => [
            ['<string>', <PrimaryKeyType>],
            ['<string>', <PrimaryKeyType>, <PrimaryKeyOption>]
        ]
    ],
    '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>
    ]
]        
结果格式说明
  • table_meta TableMeta 包含表名和表的主键定义,和创建表时的定义是一样的。
  • capacity_unit_details 表的预留读/写吞吐量配置,与计费相关。
    • capacity_unit 当预留读/写吞吐量大于 0 时,会按照预留量和持续时间进行计费,超出预留的部分进行按量计费。默认预留读写吞吐量为 0,即完全按量计费,如果要设置为大于 0 的值,请仔细阅读表格存储的计费相关文档,以免产生未期望的费用。容量型实例的预留读/写吞吐量只能设置为 0,不允许预留。
      • read 预留读吞吐量
      • write 预留写吞吐量
    • last_increase_time 最近一次上调该表的预留读/写吞吐量设置的时间,使用 UTC 秒数表示。
    • last_decrease_time 最近一次下调该表的预留读/写吞吐量设置的时间,使用 UTC 秒数表示。
  • table_options TableOptions 包含表的 TTL、MaxVersions 和 MaxTimeDeviation 配置。
    • time_to_live TimeToLive,数据存活时间,单位秒。
      • 表格存储的新版 API 支持数据自动过期。如果期望永不过期,TTL 可设置为 -1。
      • 数据是否过期是根据“数据的时间戳“、“当前时间”、“表的 TTL”三者进行判断的。当“当前时间”减去“数据的时间戳”大于“表的 TTL”时,数据会过期并被表格存储服务器端清理。有关数据的时间戳的更多信息,请参见前言
      • 当设置 TTL 后,由于判断过期涉及数据的时间戳,如果用户指定时间戳写入,且指定的时间戳严重偏离当前时间,那么可能导致未预料的数据过期行为。比如指定的数据时间戳很小,可能导致数据一写入就被过期回收了。当指定的数据时间戳很大时,又可能导致期望过期的数据过期不掉。因此在使用 TTL 功能时需要注意写入时是否指定了时间戳,以及指定的时间戳是否合理。
    • max_versions 每个属性列保留的最大版本数。
      • 表格存储的新版 API 支持多版本的数据模型,前言一章对此已经做了一些介绍。MaxVersions 即用来指定每个属性列最多保存多少个版本的数据,如果写入的版本数超过 MaxVersions,服务端只会保留版本号最大的 MaxVersions 个版本。
    • deviation_cell_version_in_sec 指定版本写入数据时所指定的版本与系统当前时间偏差允许的最大值,单位为秒。
      • 表格存储支持多版本,默认情况下系统会为新写入的数据生成一个版本号,是写入时间的毫秒单位时间戳,数据自动过期功能需要根据这个时间戳判断数据是否过期。另一方面,用户可以指定写入数据的时间戳,因此如果用户写入的时间戳非常小,与当前时间偏差已经超过了表上设置的 TTL 时间,写入的数据会立即过期。出于保护的目的,在表上增加了 MaxTimeDeviation 设置,限制写入数据的时间戳与系统当前时间的偏差,该值的单位为秒,可在建表时指定,也可通过 UpdateTable 接口修改。
  • stream_details 表的stream信息。
    • enable_stream 该表是否打开stream
    • stream_id 该表的stream的id
    • expiration_time 该表的stream的过期时间,较早的修改记录将会被删除,单位小时
    • last_enable_time 该stream的打开的时间
示例

获取表的描述信息。

    $result = $client->describeTable([
         'table_name' => 'mySampleTable',
    ]);
    var_dump($result);