当前位置: 首页 > 知识库问答 >
问题:

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

丁英韶
2023-03-14

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

共有1个答案

姬飞昂
2023-03-14

DynamoDB不建议使用扫描。只有在没有其他选项且数据量相当小的情况下才使用它。

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

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

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-gsi-sharding.htmlhttps://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql-B.html

 类似资料:
  • 问题内容: 我有一个交叉引用表: 我需要选择与 所有 标签集匹配的ID 。例如,如果给我标签,我将获得ID 。如果给我标签,我将不会获得任何ID,因为没有与 所有 标签匹配的ID 。 另外,如果为我提供了标签,那么我也不应该获得任何结果ID,因为搜索将得到一个值,因此没有ID与 所有 标签匹配。 最近两天我一直在拔头发。希望有人可以帮助我。 问题答案: 查询的想法是,您需要将记录数与子句中提供的值

  • 这更像是一个概念澄清。我可以使用Boto3通过使用上一个响应的LastEvaluatedKey重复查询找到实际计数。 我想计算符合dynamoDb中特定条件的项目。我使用的是“select=count”,根据文档[1],它应该只返回匹配项的计数,并且我假设响应不会分页。 计数-返回匹配项的数量,而不是匹配项本身。 当我通过AWS-cli尝试时,我的假设似乎是正确的(就像文档[1]中的其他api样本

  • 问题内容: 我有一个相当复杂的查询,它从三个表中获取数据,现在我希望它变得更加复杂(哦,亲爱的)! 我希望最后发布的功能显示在页面的自己的部分中,通过选择表中的最后一个条目,这很容易。但是,对于复杂的查询(网站的主页),我希望不能显示此功能。 我想将以下查询恢复为上一个查询,但未返回正确的结果: 该查询返回以下错误: MySQL错误:#1111-无效使用组函数 有没有办法解决? 问题答案: 该查询

  • 来自< code>$elementMatch的MongoDB文档: $elemMatch运算符将包含数组字段的文档与至少一个与所有指定查询条件匹配的元素匹配。 但是,如何将包含数组字段的文档与与查询匹配的所有元素进行匹配? 例如,我有这样的文档: 我需要匹配所有具有所有 如果我使用以下查询: 该文档将被匹配,因为至少有一个价格 我也试过这个,但它似乎不工作: 有没有办法排除查看所有价格而不是至少一

  • 问题内容: 在hibernate状态下,我可以执行以下操作 现在,如果我想获取int和String怎么办? 现在列表的结构是什么? 问题答案: 这可以。您唯一需要了解的是它将返回如下列表:

  • 问题内容: 我正在寻找一个SQL查询来选择所有未由同一表上的另一个查询选择的记录。具体来说,我想选择所有具有特定字段(’fieldA’)重复项的记录,然后删除除其中一个记录以外的所有记录。 因此,一条select语句可能类似于以下内容(不起作用!): 如果不可能进行单个查询,那么最有效的解决方案是什么? 问题答案: 具体来说,我想选择所有具有特定字段(’fieldA’)重复项的记录,然后删除除其中