【问题标题】:What does LastEvaluatedKey contain when using Secondary Indexes in AWS DynamoDB?在 AWS DynamoDB 中使用二级索引时,LastEvaluatedKey 包含什么?
【发布时间】:2020-11-03 05:59:00
【问题描述】:

假设我有一个以 H、R、G 和 S 作为属性的 DynamoDB 表 T; H 是分区/哈希键,R 是范围/排序键。假设我还有一个全局二级索引 (GSI),它的分区键为 G,排序键为 S。

当使用 GSI 执行查询并给出分页结果时,LastEvaluatedKey 中应该有哪些属性?我已阅读文档,但没有提供此详细信息。

【问题讨论】:

  • 你为什么不自己测试一下?

标签: amazon-dynamodb dynamodb-queries


【解决方案1】:

在 GSI 上进行查询时,LastEvaluatedKey 似乎包含所有四个(H、R、G 和 S)。以下似乎是规则:

如果我们在 GSI 上查询,那么 LastEvaluatedKey 将由 GSI 分区键、GSI 排序键、主分区键和主排序键组成。

如果我们在 LSI 上查询,那么 LastEvaluatedKey 将由 LSI 排序键、主分区键和主排序键组成。

【讨论】:

  • 如果键不是唯一的,那么有什么方法可以分页吗?我的意思是由于 gsi 不是唯一的,我们可能会得到与 lastEvaluatedKey 相同的键值,那么我们该如何处理呢?
  • @Vishnu LastEvaluatedKey 始终包含可以唯一标识行的键
【解决方案2】:

它会返回

{
  "G": "foo",
  "S": "bar"
}

在 GSI 中,不能保证该密钥是唯一的,因此请记住这一点。

【讨论】:

  • 如果键不是唯一的,那么有什么方法可以分页吗?我的意思是,由于 gsi 不是唯一的,我们可能会得到与 lastEvaluatedKey 相同的键值,那么我们该如何处理呢?
猜你喜欢
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多