Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pagination 使用带有分页的DynamoDB扫描操作而不是带有GSI的查询是否正确,我需要表中的所有项_Pagination_Amazon Dynamodb_Dynamodb Queries_Amazon Dynamodb Index - Fatal编程技术网

Pagination 使用带有分页的DynamoDB扫描操作而不是带有GSI的查询是否正确,我需要表中的所有项

Pagination 使用带有分页的DynamoDB扫描操作而不是带有GSI的查询是否正确,我需要表中的所有项,pagination,amazon-dynamodb,dynamodb-queries,amazon-dynamodb-index,Pagination,Amazon Dynamodb,Dynamodb Queries,Amazon Dynamodb Index,我了解到,当数据较大时,dynamo db扫描操作较慢。但我想知道的是,有一个提取所有项目的场景。是否仍然首选避免扫描? 考虑到索引不是免费的,并且我需要表中的所有项,我选择这种方法 请通过选择扫描操作来建议他们是否有任何问题 为什么只有扫描有并行扫描选项,默认情况下查询是并行的 如果使用带分页的查询操作,它将按顺序运行还是并行运行 如果您需要所有项目,则Scan()完全可以 只要意识到DDB 一次仅返回1MB数据,因此您需要使用ExclusiveStartKey:=LastEvaluated

我了解到,当数据较大时,dynamo db扫描操作较慢。但我想知道的是,有一个提取所有项目的场景。是否仍然首选避免扫描? 考虑到索引不是免费的,并且我需要表中的所有项,我选择这种方法

  • 请通过选择扫描操作来建议他们是否有任何问题
  • 为什么只有扫描有并行扫描选项,默认情况下查询是并行的
  • 如果使用带分页的查询操作,它将按顺序运行还是并行运行

  • 如果您需要所有项目,则Scan()完全可以

    只要意识到DDB

    • 一次仅返回1MB数据,因此您需要使用
      ExclusiveStartKey
      :=
      LastEvaluatedKey
    • Scan()可以快速使用您配置的RCU,因此请注意节流错误并重试
    反对Scan()的建议是尝试对记录子集使用Scan()+filter代替Query()。Scan()总是读取整个表

    还请注意,从性能角度来看,Scan()支持

    总分段数
    对于并行扫描请求,TotalSegments表示 将执行扫描操作的段总数 被分割的TotalSegments的值对应于 将执行并行扫描的应用程序工作人员。例如 如果要使用四个应用程序线程扫描表或 索引,指定TotalSegments值为4


    但同样,如果使用配置读取…并行扫描将很快耗尽RCU。

    非常感谢您的回答。你能帮我分享一个使用node js在lambda函数中使用并行扫描的例子吗?如果我使用GSI的query,当表增长时它是否也会有性能问题?query一次只能访问一个分区中的数据。如果您需要所有项目,扫描是正确的解决方案。