介绍表格存储的数据版本以及生命周期功能,使用数据版本以及生命周期功能可以有效的管理数据。

版本号

每次更新属性列的值均会为该值生成一个新版本,版本的值即为版本号(时间戳)。在属性列中写入数据时,可以由系统自动生成或者自定义数据的版本号。
  • 当由系统自动生成数据的版本号时,系统默认将当前时间的毫秒单位时间戳(从1970-01-01 00:00:00 UTC计算起的毫秒数)作为数据的版本号。
  • 当自定义数据的版本号时,版本号需要为64位的毫秒单位时间戳且在有效版本范围内。

版本号的单位为毫秒,在进行TTL比较和有效版本偏差计算时,需要除以1000换算成秒。

版本号主要可以实现以下功能。

  • 数据的生命周期(TTL)

    版本号可以定义数据表中数据的生命周期。当写入数据的保留时长超过设置的TTL后,系统会自动清理对应版本号的数据。

    例如数据的版本号为1468944000000(即2016-07-20 00:00:00 UTC),当数据表的TTL设置为86400(一天)时,该版本号的数据会在2016-07-21 00:00:00 UTC过期,系统会自动删除该版本号的数据。

  • 每行数据的版本读取

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

最大版本数

最大版本数(Max Versions)表示数据表中的属性列能够保留数据的最大版本个数。当属性列数据的版本个数超过设置的最大版本数时,系统会自动删除较早版本的数据。

创建数据表时,可以自定义属性列的最大版本数;创建数据表后,可以通过UpdateTable接口动态修改数据表的最大版本数。
说明 超过最大版本数的数据版本为无效数据,即使系统还未删除数据,用户已无法读取对应数据。
  • 当调小最大版本数时,如果数据版本个数超过新设的最大版本数,系统会异步删除较早版本的数据。
  • 当调大最大版本数时,如果系统还未删除超过旧的最大版本数的对应版本数据,且对应版本数据在新设的最大版本数范围中,则对应版本的数据可以重新读取。

有效版本偏差

为了避免写入数据时,自定义的时间戳与当前时间的偏差超过了数据表的TTL时间,导致写入的数据立即过期的问题,可以设置有效版本偏差。

有效版本偏差(Max Version Offset)是指定的数据版本号与系统当前时间偏差的允许最大值,单位为秒。有效版本偏差为正整数,可以大于1970-01-01 00:00:00 UTC时间到当前时间的秒数。

为了保证数据写入成功,在写入数据时系统会检查属性列数据的版本号。属性列数据的有效版本范围为[数据写入时间-有效版本偏差,数据写入时间+有效版本偏差)。只有当属性列数据的版本号(单位为毫秒)除以1000换算为秒后在有效版本范围时,才能成功写入数据。

例如当数据表的有效版本偏差为86400(一天),在2016-07-21 00:00:00 UTC时,只能写入版本号大于1468944000000(换算成秒后即2016-07-20 00:00:00 UTC)并且小于1469116800000(换算成秒后即2016-07-22 00:00:00 UTC)的数据。当某一行的某个属性列数据的版本号为1468943999000(换算成秒后即2016-07-19 23:59:59 UTC)时,该行数据写入失败。

创建数据表时,如果未设置有效版本偏差,系统会使用默认值86400;创建数据表后,可以通过UpdateTable接口动态修改有效版本偏差。

数据生命周期

数据生命周期(Time To Live,简称TTL)是数据表的一个属性,即数据的保存时间,单位为秒。表格存储会自动清理超过保存时间的数据,减少用户的数据存储空间,降低存储成本。

例如数据表的TTL设置为86400(一天),在2016-07-21 00:00:00 UTC时,数据表中所有版本号小于1468944000000(除以1000换算成秒后即2016-07-20 00:00:00 UTC)的属性列数据均会过期,系统会自动清理对应过期数据。

创建数据表时,如果希望数据永不过期,可以设置TTL为-1;创建数据表后,可以通过UpdateTable接口动态修改数据生命周期。
说明 超过TTL的过期数据为无效数据,即使系统还未删除数据,用户已无法读取对应数据。
  • 当调小TTL时,可能会有数据过期,系统会异步删除对应过期数据。
  • 当调大TTL时,如果系统还未删除在旧的TTL之外的以前版本的数据,且对应版本数据在新设的TTL中,则对应版本的数据可以重新读取。