【问题标题】:I want to increase number of records read using queryPage in dynamoDB我想增加在 dynamoDB 中使用 queryPage 读取的记录数
【发布时间】:2020-12-11 00:28:45
【问题描述】:

我有一个要求,即在查询 DynamoDB 表时,我只需要从匹配记录中获取某个属性。我使用withSelect(Select.SPECIFIC_ATTRIBUTES).withProjectionExpression(<attribute_name>) 来获取该属性。但是在这两种情况下,queryPage 操作读取的记录数是相同的(1. 使用 withSelect 和 2. 不使用 withSelect)。唯一的好处是通过使用 withSelect,这些操作的处理速度非常快。但这反过来又会导致大量 DynamoDB 读取。有什么方法可以在单个查询中读取更多记录,从而减少数据库读取次数?

【问题讨论】:

    标签: amazon-dynamodb dynamodb-queries


    【解决方案1】:

    您看到读取次数相同的原因是,投影表达式是应用在 after 从存储节点检索每个项目,但 before em> 它被收集到响应对象中。投影表达式的净好处是节省网络带宽,进而可以节省延迟。但这不会导致消耗的容量节省。

    如果您想节省消耗的容量并能够在每个请求中检索更多项目,您唯一的选择是:

    1. 创建索引并仅投影您需要查询的属性;这可以是本地二级索引,也可以是全局二级索引,具体取决于您是否需要更改索引的分区键
    2. 尝试优化存储在表中的数据架构;也许你可以压缩你的项目,或者只是一般地计算出导致更小的文档的编码

    如果您决定使用索引,请记住以下几点:本地二级索引在您的示例中可能效果最好,但您需要为此创建一个新表(本地二级索引只能在以下情况下创建)您创建表格);全局二级索引也可以工作,但前提是您的应用程序可以容忍对索引的最终一致读取(当然,与这些相关的成本更高)。

    在此处阅读有关在 DynamoDB 中使用索引的更多信息:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes.html

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多