本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
工作原理:Amazon Keyspaces 生存时间 (TL)
Amazon Keyspaces 生存时间 (TTL) 已完全托管。您不必管理诸如压缩策略之类的低级系统设置。数据将在您指定的时间过期,并且 Amazon Keyspaces 会自动删除过期数据(通常在 10 天内),而不会影响您的应用程序性能或可用性。
过期数据被标记为删除,不适用于数据操作语言 (DML) 语句。当您继续对包含过期数据的行执行读取和写入时,过期数据将继续计入读取容量单位 (RCU) 和写入容量单位 (WCU),直到将其从存储中删除。
为表设置默认 TTL 值
在 Amazon Keyspaces 中,您可以在创建表时为表中的所有行设置默认 TTL 值。您也可以编辑现有表来设置或更改插入表中的新行的默认 TTL 值。更改表的默认 TTL 值不会修改表中任何现有数据的 TTL 值。表的默认 TTL 值为零,表示数据不会自动过期。如果表的默认 TTL 值大于零,则会向每行添加一个过期时间戳。
每次更新数据时,Amazon Keyspaces 都会计算一个新的 TTL 时间戳。TTL 值以秒为单位设置,最大可配置值为 630720,000 秒,相当于 20 年。有关如何使用Amazon Web Services Management Console或 CQL 设置、修改和禁用表的默认 TTL 值的更多信息,请参阅如何使用生存时间 (TL)。
为行和列设置自定义 TTL 值
注意
在为行和列设置自定义 TTL 值之前,必须先在表上启用 TTL。有关更多信息,请参阅如何使用自定义属性启用生存活时间 (TL):
要覆盖表的默认 TTL 值或为单个行设置过期日期,可以使用以下 CQL 数据操作语言 (DML) 语句:
-
INSERT
— 用于插入设置了 TTL 值的新数据行。 -
UPDATE
— 用于使用新的 TTL 值修改现有数据行。
为行设置 TTL 值优先于表的默认 TTL 设置。
有关 CQL 语法和示例,请参阅INSERT用于使用 CQL 编辑生存时间 (TL) 设置。
要覆盖或设置单个列的 TTL 值,您可以使用以下 CQL DML 语句更新现有行中列子集的 TTL 设置:
-
UPDATE
— 用于更新一列数据。
为列设置 TTL 值优先于表的默认 TTL 设置和该行的任何自定义 TTL 设置。有关 CQL 语法和示例,请参阅UPDATE用于使用 CQL 编辑生存时间 (TL) 设置。
在表格上启用 TTL
当您在任一CREATE
TABLE
或ALTER TABLE
语句中指定大于 0 的default_time_to_live
值时,会自动为表启用 TTL。如果您没有default_time_to_live
为表指定,但想要使用INSERT
或UPDATE
操作为行或列指定自定义 TTL 值,则必须先为表启用 TTL。您可以使用ttl
自定义属性为表启用 TTL。
当您在表上启用 TTL 时,Amazon Keyspaces 开始为每行存储与 TTL 相关的额外元数据。此外,TTL 使用到期时间戳来跟踪行或列的过期时间。时间戳存储为行元数据,会增加该行的存储成本。
启用了 TTL 功能后,您无法为表禁用它。default_time_to_live
将表设置为 0 会禁用新数据的默认过期时间,但不会停用 TTL 功能,也不会将表恢复为原始的 Amazon Keyspaces 存储元数据或写入行为。
Amazon Keyspaces 上线时间和与Amazon服务的集成
以下 TTL 指标在 Amazon 中可用 CloudWatch ,用于实现持续监控。
-
TTLDeletes
— 使用存活时间 (TTL) 连续删除或更新数据所消耗的单位。
有关如何监控 CloudWatch 指标的更多信息,请参阅使用亚马逊监控亚马逊Keyspaces CloudWatch。
使用时Amazon CloudFormation,可以在创建 Amazon Keyspaces 表时启用 TTL。有关更多信息,请参阅 Amazon CloudFormation 用户指南。