全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
表格存储

主键和属性

更新时间:2017-09-28 16:42:27

主键

  • 主键是表中每一行的唯一标识。主键由 1 到 4 个主键列组成。

  • 创建表的时候,必须明确指定主键的组成、每一个主键列的名字和数据类型以及它们的顺序。

  • 主键列的数据类型只能是 String、Integer 和 Binary。如果为 String 或者 Binary 类型,长度不超过 1 KB。

属性

属性存放行的数据。每一行包含的属性列个数没有限制。

版本号

在一个属性列上,当写入的版本数超过数据表的最大版本数时,较早版本的数据会被删除,只保留最新的 Max Versions 的版本数。

在写入数据时可以指定属性列的版本号,如果不指定版本号,服务端会将当前时间的毫秒单位时间戳(从 1970-01-01 00:00:00 UTC 计算起的毫秒数)作为属性列生成版本号。比如属性列版本号为 1468944000000 (即 2016-07-20 00:00:00 UTC),当数据表的 TTL 设置为 86400 (一天)时,该版本的数据将会在 2016-07-21 00:00:00 UTC 过期,随后会被后台系统自动删除。

读取一行数据时,可以指定每列最多读取多少版本或者读取的版本号范围。

注意:

  • 版本号的单位为毫秒,在进行 TTL 比较和有效版本偏差计算时,需要除以 1000 换算成秒。
  • 当数据的版本号(即时间戳)完全由服务端决定时,写入的数据在写入后经过 TTL 秒后会被系统清理。
  • 为了防止无效的写入,写入过期数据将会直接失败。例如在 2016-07-21 00:00:00 向 TTL 为 86400 的数据表中写入版本号小于 1468944000000 (即 2016-07-20 00:00:00 UTC)的数据将会直接失败。
  • 为了防止错误的写入,写入的属性列的版本号换算成秒后,需要在 [数据写入时间-有效版本偏差,数据写入时间+有效版本偏差) 的范围内。

列名的命名规范

主键列和属性列遵循如下命名规范:

  • 必须由英文字母、数字或下划线(_)组成

  • 首字符必须为英文字母或下划线(_)

  • 大小写敏感

  • 长度在 1~255 个字符之间

列值类型

表格存储支持 5 种类型的列值:

数据类型 定义 是否可为主键 大小限制
String UTF-8,可为空 为主键列时最大为 1 KB,为属性列时请参考限制说明
Integer 64 bit,整型 8 Bytes
Double 64 bit,Double 类型 8 Bytes
Boolean True/False,布尔类型 1 Byte
Binary 二进制数据,可为空 为主键列时最大为 1 KB,为属性列时请参考限制说明

分区键

组成主键的第一个主键列又称为分区键。表格存储会根据表中每一行分区键的值所属的范围自动将这一行数据分配到对应的分区和机器上,以达到负载均衡的目的。

具有相同分区键的行属于同一个数据分区,一个分区可能包含多个分区键。分区键是最小的分区单位,一个分区键下的数据无法再做切分。为了防止分区过大无法切分,单个分区键下所有行的大小总和建议不超过 1 GB。

表格存储服务会根据特定的规则对分区进行分裂和合并,以达到更好的负载均衡。这个过程是自动的,应用程序无需关心。

本文导读目录