Amazon Keyspaces 中的客户端时间戳 - Amazon Keyspaces(Apache Cassandra 兼容)

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

Amazon Keyspaces 中的客户端时间戳

在 Amazon Keyspaces 中,客户端时间戳是与 Cassandra 兼容的时间戳,表中的每个单元格都会保留这些时间戳。您可以让您的客户端应用程序确定写入顺序,从而使用客户端时间戳来解决冲突。例如,当全球分布式应用程序的客户端对相同的数据进行更新时,客户端时间戳将保留在客户端上进行更新的顺序。Amazon Keyspaces 使用这些时间戳来处理写入操作。

Amazon Keyspaces 客户端时间戳是完全托管的。您不必管理诸如清理和压缩策略之类的低级系统设置。

删除数据时,会使用 Tombstone 标记行来进行删除。Amazon Keyspaces 会自动移除 Tombstoned 数据(通常在 10 天内),而不会影响您的应用程序性能或可用性。Tombstoned 数据不可用于 Data Manipulation Language (DML) 语句。在继续对包含 Tombstoned 数据的行执行读写操作时,Tombstoned 数据将继续计入存储、读取容量单位 (RCU) 和写入容量单位 (WCU),直至从存储中删除。

为表打开客户端时间戳后,您可以在 Data Manipulation Language (DML) CQL 查询中使用 USING TIMESTAMP 子句指定时间戳。有关更多信息,请参阅 在 Amazon Keyspaces 中将客户端时间戳用于查询。如果您未在 CQL 查询中指定时间戳,Amazon Keyspaces 将使用您的客户端驱动程序传递的时间戳。如果客户端驱动程序不提供时间戳,Amazon Keyspaces 会自动分配单元格级别的时间戳,因为时间戳不能为 NULL。要查询时间戳,可以在 DML 语句中使用 WRITETIME 函数。

Amazon Keyspaces 不会针对打开客户端时间戳收取额外费用。但是,使用客户端时间戳,您可能为行中的每个值存储和写入其他数据。这可能会导致额外的存储使用量,在某些情况下还会导致吞吐量使用量增加。有关 Amazon Keyspaces 定价的更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)定价

在 Amazon Keyspaces 中打开客户端时间戳后,每行的每一列都存储一个时间戳。这些时间戳大约占用 20-40 字节(取决于您的数据),并会增加该行的存储和吞吐量成本。这些元数据字节也计入您的 1 MB 行大小配额。要确定存储空间的总体增加情况(确保行大小保持在 1 MB 以内),请考虑表中的列数和每行中集合元素的数量。例如,如果一个表有 20 列,每列存储 40 字节的数据,则该行的大小将从 800 字节增加到 1200 字节。有关如何估计行大小的更多信息,请参阅估算 Amazon Keyspaces 中的行大小。除了额外的 400 字节存储空间外,在本示例中,每次写入消耗的写入容量单位 (WCU) 数量从 1 个 WCU 增加到 2 个 WCU。有关如何计算读取和写入容量的更多信息,请参阅 在 Amazon Keyspaces 中配置读取/写入容量模式

为表打开客户端时间戳后,您无法将其关闭。

要了解有关如何在查询中使用客户端时间戳的更多信息,请参阅在 Amazon Keyspaces 中将客户端时间戳用于查询

Amazon Keyspaces 客户端时间戳如何与 AWS 服务集成

Amazon CloudWatch 中提供了以下客户端时间戳指标,用于实现持续监控。

  • SystemReconciliationDeletes:删除 Tombstoned 数据所需的删除操作数。

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

使用 AWS CloudFormation 时,可以在创建 Amazon Keyspaces 表时启用客户端时间戳。有关更多信息,请参阅 《AWS CloudFormation 用户指南》