前端之家收集整理的这篇文章主要介绍了
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.
@H_
301_6@
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>";
}