Amazon dynamodb 如何在不使用hashKey的情况下查询dynamoDB

Amazon dynamodb 如何在不使用hashKey的情况下查询dynamoDB,amazon-dynamodb,Amazon Dynamodb,我有一个dynamoDB表,它有两个属性: A:主分区密钥 B:主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗 是否可以将B设为GSI(全局二级索引),如何使用B执行和查询表,因为B已经是一个排序键。您需要分区键进行查询-您不能单独使用排序键。你只能扫描 因此,唯一的解决方法是创建一个以B作为分区键的GSI 更新 是的,您可以使用范围键作为GSI 使用GSI的缺点是: 每个表最多只能有5个GSI,因此请明智地选择需要索引的内容,因为GSI只能在表创建期间指定,不能更改

我有一个dynamoDB表,它有两个属性:


A:主分区密钥

B:主排序键


我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗


是否可以将B设为GSI(全局二级索引),如何使用B执行和查询表,因为B已经是一个排序键。

您需要分区键进行查询-您不能单独使用排序键。你只能扫描

因此,唯一的解决方法是创建一个以B作为分区键的GSI

更新

是的,您可以使用范围键作为GSI

使用GSI的缺点是:

  • 每个表最多只能有5个GSI,因此请明智地选择需要索引的内容,因为GSI只能在表创建期间指定,不能更改
  • GSI将花费您额外的资金,因为您需要为其分配调配的吞吐量
  • GSI最终是一致的,这意味着DynamoDB不保证将与表的哈希键相关联的数据写入DB时,数据的GSI哈希键立即可用于查询。该文档指出,这通常是即时的,但可能需要几秒钟才能使用GSI哈希键

是否可以将范围键设置为GSI分区键@DynamoDBRangeKey和@dynamodBindeThashKey(attributeName=B,globalSecondaryIndexName=B_index)对我来说是相同的问题。谢谢