Amazon dynamodb 从表中获取项的Dynamo DB查询操作的服务器超时

Amazon dynamodb 从表中获取项的Dynamo DB查询操作的服务器超时,amazon-dynamodb,Amazon Dynamodb,我有一个IDsEventID数组,在表中可以是百万或十亿个ID。我使用for循环遍历每个id,并使用PHP中的查询操作从dynamo db表中检索一个项。但是,由于查询操作会遍历我的表中的大量信息,因此执行查询操作需要的时间太长。所以,在这种情况下,我没有得到任何结果,因为我得到了一个暂停。下面的代码尝试执行此操作,但由于大量信息,此操作失败。我想知道您是否对如何使$sfweventarrayds数组中的大量ID的查询操作更快、可行有任何建议 有两种可能的解决方案可以改进查询操作: 使用批处理获

我有一个IDsEventID数组,在表中可以是百万或十亿个ID。我使用for循环遍历每个id,并使用PHP中的查询操作从dynamo db表中检索一个项。但是,由于查询操作会遍历我的表中的大量信息,因此执行查询操作需要的时间太长。所以,在这种情况下,我没有得到任何结果,因为我得到了一个暂停。下面的代码尝试执行此操作,但由于大量信息,此操作失败。我想知道您是否对如何使$sfweventarrayds数组中的大量ID的查询操作更快、可行有任何建议


有两种可能的解决方案可以改进查询操作:

使用批处理获取:如果您已经知道事件ID并希望查询数据库以获取更多信息,那么批处理获取将是理想的选择。您创建了一个最大允许的100个IDs块,并调用DynamoDB一次性获取信息。重复上述步骤,直到获得所有ID。是文档链接

您可以根据需要增加表的读取容量。这将导致为dynamoDB支付更多的钱


非常感谢你的回答,我一定会用它作为未来的参考。因此,我发现问题不在于服务器超时,而在于ajax调用。因此,我没有将其作为webservice调用,而是创建了一个可以在服务器上运行的命令行工具,并给出了结果,尽管这需要一些时间。
    for ($j = 0 ; $j < count($sfweventarrayRDS) ; $j++){
        $keyconditions = array(
            "eventid" => array(
                "ComparisonOperator" => ComparisonOperator::EQ,
                "AttributeValueList" => array(
                    array(Type::NUMBER => $sfweventarrayRDS[$j]["eventid"])
                )
            )
        );

        $sfweventarrayDynamo = Dynamo::getItems("eventlocation",$keyconditions,$limit);

        if (count($sfweventarrayDynamo) > 0){

            $timediffepoch = $sfweventarrayDynamo[0]["edatecreated"]["N"] - $sfweventarrayRDS[$j]["edatecreated"];
            $timediffstandard = new DateTime("@$timediffepoch");

            if ($timediffstandard->format('i') >= 5){
                $starttimeepoch = $sfweventarrayRDS[$j]["edatecreated"];
                $endtimeepoch = $sfweventarrayDynamo[0]["edatecreated"]["N"];
                $starttimestandard = new DateTime("@$starttimeepoch");
                $endtimestandard = new DateTime("@$endtimeepoch");

                $each_event = array("eventid" => $sfweventarrayDynamo[0]["eventid"]["N"], 
                                    "organizationid" => $sfweventarrayRDS[$j]["organizationid"],
                                    "userid" => $sfweventarrayDynamo[0]["userid"]["N"],
                                    "starttime" => $starttimestandard->format('Y-m-d H:i:s'), 
                                    "endtime" => $endtimestandard->format('Y-m-d H:i:s'),
                                    "location" => $sfweventarrayRDS[$j]["location"],
                                    "startlatitude" => $sfweventarrayRDS[$j]["latitude"],
                                    "startlongitude" => $sfweventarrayRDS[$j]["longitude"],
                                    "endlatitude" => $sfweventarrayDynamo[0]["latitude"]["N"],
                                    "endlongitude" => $sfweventarrayDynamo[0]["longitude"]["N"]);
                array_push($safewalkeventsDynamo, $each_event);
            }
        }
    }