php – 如何从DynamoDB表中获取所有项目而不指定主键?

前端之家收集整理的这篇文章主要介绍了php – 如何从DynamoDB表中获取所有项目而不指定主键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为产品的表与主键Id.我想选择表中的所有项目.这是我正在使用的代码
$batch_get_response = $dynamodb->batch_get_item(array(
    'RequestItems' => array(

        'products' => array(
            'Keys' => array(
                array( // Key #1
                    'HashKeyElement'  => array( AmazonDynamoDB::TYPE_NUMBER => '1'),'RangeKeyElement' => array( AmazonDynamoDB::TYPE_NUMBER => $current_time),),array( // Key #2
                    'HashKeyElement'  => array( AmazonDynamoDB::TYPE_NUMBER => '2'),)
        )
    )   
));

是否可以选择所有项目而不指定主键?我正在使用AWS SDK for PHP.

Amazon DynamoDB为此提供了 Scan操作,它通过执行表的全面扫描来返回一个或多个项目及其属性.请注意以下两个限制:

>根据您的表大小,您可能需要使用分页来检索整个结果集:

Note
If the total number of scanned items exceeds the 1MB limit,the
scan stops and results are returned to the user with a
LastEvaluatedKey to continue the scan in a subsequent operation. The
results also include the number of items exceeding the limit. A scan
can result in no table data meeting the filter criteria.

The result set is eventually consistent.

>扫描操作在性能和消耗的容量单元(即价格)方面可能是昂贵的,请参阅Query and Scan in Amazon DynamoDB中的“扫描和查询性能”部分:

[…] Also,as a table grows,the scan operation slows. The scan
operation examines every item for the requested values,and can use up
the provisioned throughput for a large table in a single operation
.
For quicker response times,design your tables in a way that can use
the Query,Get,or BatchGetItem APIs,instead. Or,design your
application to use scan operations in a way that minimizes the impact
on your table’s request rate. For more information,see 07003. [emphasis mine]

您可以在Scanning Tables Using the AWS SDK for PHP Low-Level API for Amazon DynamoDB中找到有关此操作和一些示例代码段的更多详细信息,其中最简单的示例说明了操作:

$dynamodb = new AmazonDynamoDB();

$scan_response = $dynamodb->scan(array(
    'TableName' => 'ProductCatalog' 
));

foreach ($scan_response->body->Items as $item)
{
    echo "<p><strong>Item Number:</strong>"
         . (string) $item->Id->{AmazonDynamoDB::TYPE_NUMBER};
    echo "<br><strong>Item Name: </strong>"
         . (string) $item->Title->{AmazonDynamoDB::TYPE_STRING} ."</p>";
}

猜你在找的PHP相关文章