我有一个问题,如果我能够向BigTable发送一个ReadModifyWrite请求,它将非常有帮助,因为它只在新值大于或小于现有值时才覆盖该值。这有没有可能呢?注意:我想了一个老套的方法,我使用时间戳作为我的实际值,并且有最大数量的版本1,这样就可以保持“最新”的值,也就是更高的时间戳。但这些时间戳的值将从1到10,而不是15亿。这样行得通吗?
我查看了现有的API,但没有找到任何可以帮助我做到这一点的东西。它看起来在DynamoDB中是可用的,所以我想请求BigTable也提供它是合理的。https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html#API_UpdateItem_RequestSyntax
发布于 2019-07-19 14:15:00
您的时间戳方法可能是可行的,但与基于年龄的垃圾收集之类的东西交互很差。
我还假设你指的是CheckAndMutate而不是ReadModifyWrite?前者允许您进行条件覆盖,后者允许您进行无条件的增量/附加。如果你真的想要一个只有在结果更大的情况下才有效的增量,只需确保你只发送正的增量;)
我的建议是,假设您的客户端语言支持它,则使用带有value_range_filter的CheckAndMutateRow请求。这将要求您对值使用固定宽度的编码,但这与重用时间戳没有什么不同。
示例:如果您希望将该值设置为000768,但仅当该值是增加时,请使用从000000到000767的value_range_filter,并在CheckAndMutate的true_mutation中执行写入。
https://stackoverflow.com/questions/57103719
复制相似问题