文档中心

支持的操作

KTS提供了以下一系列操作来对表和数据进行操作:

表操作

  • CreateTable : 创建表操作
  • DeleteTable : 删除表操作
  • DescribeTable : 检索表信息操作:表的当前状态、主键和创建时间
  • ListTables:获取某个账户在某个Region的表列表
  • UpdateTable:增加和减少表的预配置吞吐量

数据操作

  • GetRow:读取单行数据
  • PutRow:写入单行数据
  • UpdateRow:更新单行数据
  • DeleteRow:删除单行数据
  • BatchGetRow:批量读取多行数据
  • BatchWriteRow:批量写入多行数据
  • Scan:顺序扫描

读操作特性

  • 最终一致性读取
    应用读取数据时,返回的结果可能不是刚刚完成的写入操作的结果,响应可能包含陈旧数据。所有的副本的一致性一般能在一秒内就能实现;因此应用过一会重复读取请求时,响应就会返回最新数据。默认情况下,GetRow操作会执行最终一致性读取,但是应用也可以选择强一致性读取。
  • 强一致性读取
    应用读取数据时,KTS返回的响应中包含最新数据,反映之前所有相关写操作执行的更新。

写操作特性

  • PutRow、UpdateRow、DeleteRow操作原子性
    以上3个操作的结果保证原子性,要么全部成功,要么全部失败,不会存在中间状态。
  • BatchWriteRow不保证原子性
    Table系统提供BatchWriteRow操作对多个单行写操作进行聚集,应用可以将多个PutRow、UpdateRow、DeleteRow操作放到一个BatchWriteRow操作中。需要特别注意的是,BatchWriteRow操作本身不保证原子性,可能会出现部分操作执行成功,部分操作执行失败的情况。
  • 条件更新
    在多用户环境中,请务必确保一个客户端执行的数据更新不会覆盖另外一个客户端执行的更新。由此导致的“更新丢失”是典型的数据库并发问题。假设有两个客户端在读取同一行数据。两个客户端都从KTS中获取该行的副本。客户端1随后发送了一条更新此行数据的请求。客户端2根本不知道发生了更新。稍后,客户端2发送自己更新此行数据的请求,从而覆盖了客户端1所做的更新,这导致客户端1所做的更新丢失。
    KTS支持“有条件”写入功能,可以让应用在更新数据时指定一个条件。只有满足指定的条件,写入才会成功;否则返回失败。