全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
表格存储

Stream API/SDK

更新时间:2017-10-09 16:23:45

API

打开/关闭 Stream

用户可以在创建表的时候设置 Stream 是否开启,也可以通过 UpdateTable 来开启或者关闭 Stream。CreateTableUpdateTable 中新增了 StreamSpecification 参数,表示 Stream 的相关参数:

  • enable_stream:Stream 是否打开。
  • expiration_time:Stream 数据的过期时间,较早的修改记录将会被删除。

读取修改记录

读取 Stream 数据的流程如下:

  1. 调用 ListStreams 获取当前表的 Stream 信息,例如 StreamID。详细信息请参见 ListStream

  2. 调用 DescribeStream 获取当前 Stream 的数据分片信息,例如 shard 的列表,每个 shard 记录又包含父 shard 信息、shardID 信息等。详细信息请参见 DescribeStream

  3. 获取 StreamID 和 shardID 后,通过 GetShardIterator 获取当前 shard 的读 iterator 值,这个值标记着读取该 shard 记录的起始位置。详细信息请参见 GetShardIterator

  4. 调用 GetStreamRecord 来读取具体的修改记录,每次调用会返回新的 iterator,用于下次读取。详细信息请参见 GetStreamRecord API

注意:

  • 同一个主键下的操作必须有序。在同一个 shard 下,Stream 做了这个保证。但是 shard 会出现分裂、合并等操作,所以您在读取某个 shard 的数据时,需要确保他的父 shard 以及 parent_sibling 的数据已经被读取。
  • 当读到空的 NextShardIterator 的时候,说明当前 shard 的增量数据已经全部读完,通常情况是该 shard 已经进入 inactive 的状态(发生分裂或者合并)。当一个 shard 已经被全部读完以后,您可以重新调用 DescribeStream 获取新的 shard 信息。

SDK

为了方便您使用 Stream API,Table Store 的 Java SDK 已经支持 Stream 接口。详细信息请参见 Java SDK

本文导读目录