DynamoDB:仅获取所有唯一哈希键的最新项

问题描述 投票:2回答:1

给定一个DynamoDB表,其中包含分区键id和排序键date_epoch

我会有这样的项目:

id  |  date_epoch
-----------------
1   |  1535961978
2   |  1535961996
1   |  1535962033
2   |  1535962055
3   |  1535962064
5   |  1535962073
1   |  1535962080
2   |  1535962085

对于每个给定的独特id,我只想要它最新的项目。所以从这个示例数据中,我只想得到以下结果:

id  |  date_epoch
-----------------
3   |  1535962064
5   |  1535962073
1   |  1535962080
2   |  1535962085

我可以用非常难看的代码弄清楚如何做到这一点。我得到了每个独特的id,然后迭代每个单独的id并得到最新的项目.withScanIndexForward(false).withMaxResultSize(1)(如this examplethis example所示),但似乎必须有更好的方法来做到这一点。

我们可以设置扫描过滤器来限制最大项目或其他我没有想到的东西吗?

java amazon-dynamodb aws-sdk aws-java-sdk
1个回答
1
投票

这不仅仅是一个评论,而是一个答案,但在这里它是:不 - 你无法通过扫描得到你正在寻找的答案。没有办法制作过滤器,即使有过,你仍然需要支付扫描的全价(尽管你会节省网络带宽)。

你的选择是:

  1. 使用您正在使用的技术:获取唯一ID,然后使用限制1进行迭代和查询
  2. 使用两个表:一个用于保存历史值,另一个用于保存每个项目的最新值

请注意,在第二个例子中有一些警告:你必须容忍最终的一致性;并且您不得每秒更新任何项目超过1000次(尽管实际限制实际上更低 - 可能是6-700)

© www.soinside.com 2019 - 2024. All rights reserved.