View a markdown version of this page

Client-side Amazon Keyspaces 中的时间戳 - Amazon Keyspaces(Apache Cassandra 兼容)

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

Client-side Amazon Keyspaces 中的时间戳

在 Amazon Keyspaces 中,客户端时间 Cassandra-compatible 戳是为表中每个单元格保留的时间戳。您可以让您的客户端应用程序确定写入顺序,从而使用客户端时间戳来解决冲突。例如,当全球分布式应用程序的客户端对相同的数据进行更新时,客户端时间戳将保留在客户端上进行更新的顺序。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 中开启客户端时间戳后,将在行数据旁边存储其他元数据。每行的开销取决于您的列类型、该行是否使用 TTL 以及(对于多区域表)复制区域的数量。开销范围从简单标量列行的几个字节到具有非冻结集合或多区域计数器的行的数十字节或更多。此元数据将计入您的存储成本和 1 MB 行大小配额。

要确定对存储和吞吐量的总体影响,请考虑表中的列数、使用的数据类型以及每行中收集元素的数量。例如,具有许多包含大量元素的非冻结集合列的行的开销要高于只有标量列的行。额外的元数据还会影响每次写入消耗的写入容量单位 (WCU) 的数量。有关如何估算特定架构开销的更多信息,请参阅估算 Amazon Keyspaces 中的行大小。有关如何计算读取和写入容量的更多信息,请参阅 在 Amazon Keyspaces 中配置 read/write 容量模式

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

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

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

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

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

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

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