Parallels扫描dynamodb和php

时间:2015-10-28 18:19:38

标签: php laravel amazon-web-services amazon-dynamodb

我使用的是php和AWS,我有一张3.3m的记录表,所以我需要扫描它并且我使用的是并行扫描。

我的问题是:并行扫描会在第一次执行后自动使用扫描中最后一次评估的键吗?或者我需要在params数组中设置参数。

代码是:

$totalSegments = 10;

$params = array(
  'TableName' => $t,
  'TotalSegments' => $totalSegments
);

$scanCommands = array();

for($i = 0; $i < $totalSegments; $i++){
  $scanCommands[] = $this->db_client->getCommand('Scan', array('Segment' => $i) + $params);
}

$this->db_client->execute($scanCommands);

foreach ($scanCommands as $scanCommand) {
  $result = $scanCommand->getResult();
  $items = $result["Items"];
}

所以我需要知道最后一次评估的密钥是自动使用还是需要在params数组中设置。

由于

1 个答案:

答案 0 :(得分:0)

我怀疑这是一个并行扫描,但你正在对记录进行分页。

Answer to your question is yes, you need to supply **LastEvaluatedKey** array to 
get next set of records

注意:您说您有大约3M记录,如果表吞吐量不够高,您将获得需要单独处理的油门错误。如果这曾经是一段时间,那么它可以优化你的表并避免扫描(如亚马逊推荐)