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

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

Amazon Keyspaces 中的客户端时间戳

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

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

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

为表开启客户端时间戳后,您可以在数据操作语言 () DML 查询中使用USING TIMESTAMP子句指定时间戳。CQL有关更多信息,请参阅 在 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 字节存储空间外,在本示例中,每次写入消耗的写入容量单位 (WCUs) 数量从 1 增加WCU到 2 WCUs。有关如何计算读取和写入容量的更多信息,请参阅 在 Amazon Keyspaces 中配置读/写容量模式

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

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

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

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

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

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

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