工作原理:Amazon Keyspaces 生存时间 (TTL) - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

工作原理:Amazon Keyspaces 生存时间 (TTL)

Amazon Keyspaces 生存时间 (TTL) 是完全托管式的。您不必管理诸如压缩策略之类的低级系统设置。数据会在您指定的时间过期,Amazon Keyspaces 会自动删除过期数据(通常在 10 天内),而不会影响您的应用程序性能或可用性。

过期数据会标记为已删除,且无法用于数据操作语言 (DML) 语句。在继续对包含过期数据的行执行读取和写入操作时,过期数据将继续计入读取容量单位 (RCU) 和写入容量单位 (WCU),直至从存储中删除。

为表设置默认 TTL 值

在 Amazon Keyspaces 中,您可以在创建表时为表中的所有行设置默认 TTL 值。您也可以编辑现有表格,以设置或更改插入到表中的新行的默认 TTL 值。更改表的默认 TTL 值不会修改表中任何现有数据的 TTL 值。表的默认 TTL 值为零,表示数据不会自动过期。如果表的默认 TTL 值大于零,则会为每行添加一个过期时间戳。

每次数据更新时,Amazon Keyspaces 都会计算一个新的 TTL 时间戳。TTL 值以秒为单位设置,最大可配置值为 630,720,000 秒,相当于 20 年。有关如何使用 Amazon Web Services Management Console 或 CQL 设置、修改和禁用表的默认 TTL 值的更多信息,请参阅如何使用生存时间 (TL)

为行和列设置自定义 TTL 值

注意

在为行和列设置自定义 TTL 值之前,必须先在表上启用 TTL。有关更多信息,请参阅如何使用自定义属性对现有表启用生存时间 (TTL)

要覆盖表的默认 TTL 值或为各行设置过期日期,可以使用以下 CQL 数据操作语言 (DML) 语句:

  • INSERT – 用于插入设置了 TTL 值的新数据行。

  • UPDATE – 用于使用新的 TTL 值修改现有数据行。

为行设置 TTL 值优先于表的默认 TTL 设置。

有关 CQL 语法和示例,请参阅使用 CQL 通过 INSERT 编辑自定义生存时间 (TTL) 设置

要覆盖或设置单个列的 TTL 值,可以使用以下 CQL DML 语句更新现有行中列子集的 TTL 设置:

  • UPDATE – 用于更新一列数据。

为列设置 TTL 值优先于表的默认 TTL 设置和该行的任何自定义 TTL 设置。有关 CQL 语法和示例,请参阅使用 CQL 通过 UPDATE 编辑自定义生存时间 (TTL) 设置

在表上启用 TTL

当您在 CREATE TABLEALTER TABLE 语句中指定大于 0 的 default_time_to_live 值时,会自动为表启用 TTL。如果您没有为表指定 default_time_to_live,但要使用 INSERTUPDATE 操作为行或列指定自定义 TTL 值,则必须先为该表启用 TTL。您可以使用 ttl 自定义属性为表启用 TTL。

当您在表上启用 TTL 时,Amazon Keyspaces 会开始为每行存储其他与 TTL 相关的元数据。此外,TTL 使用过期时间戳来跟踪行或列的过期时间。时间戳存储为行的元数据,并占该行的存储成本。

TTL 功能启用后,无法为表禁用它。将表的 default_time_to_live 设置为 0 会禁用新数据的默认过期时间,但不会停用 TTL 功能,也不会将表恢复到原来的 Amazon Keyspaces 存储元数据或写入行为。

Amazon Keyspaces 生存时间以及与 Amazon 服务的集成

Amazon CloudWatch 中提供了以下 TTL 指标,用于实现持续监控。

  • TTLDeletes – 使用生存时间 (TTL) 删除或更新一行数据所消耗的单位。

有关如何使用 CloudWatch 指标的更多信息,请参阅使用亚马逊监控亚马逊密钥空间 CloudWatch

使用 Amazon CloudFormation 时,您可以在创建 Amazon Keyspaces 表时启用 TTL。有关更多信息,请参阅 Amazon CloudFormation 用户指南