dynamodb查询以选择与一组值匹配的所有项目

时间:2019-04-15 12:51:59

标签: amazon-dynamodb dynamodb-queries

在发电机表中,我想通过选择属性值与一组值之一匹配的所有项目进行查询。例如,我的表具有current_status属性,因此我希望所有具有“ NEW”或“ ASSIGNED”值的项目。 如果我将GSI应用于current_status属性,看起来我必须在两个查询中执行此操作?还是扫描?

1 个答案:

答案 0 :(得分:0)

DynamoDB不建议使用扫描。仅当没有其他选择并且您的数据量很小时才使用它。

您需要在此处使用GSI。将current_status放在GSI的PK中会导致热点  分区问题。

正确的解决方案是将随机数放在GSI的PK中,范围从0..N,其中N是分区数。并将状态与时间戳或某些唯一信息一起放在GSI的SK中,以保持PK-SK对唯一。因此,当您要基于current_status查询时,请与PK并行执行N个查询,范围从0..N,SK与current_status一起开始。 N应该根据您拥有的数据量来确定。如果每行上的数据小于4kb,则此并行查询操作将消耗N个读取单元,而不会出现热分区问题。以下链接提供了有关此内容的详细信息

these https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-gsi-sharding.html