gpt4 book ai didi

php - 如何获取 DynamoDB 表中的项目总数?

转载 作者:IT王子 更新时间:2023-10-28 23:56:13 27 4
gpt4 key购买 nike

我想知道我的 dynamodb 表中有多少项目。在 API 指南中,一种方法是使用 scan如下:

<?php
$dynamodb = new AmazonDynamoDB();

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

echo "Total number of items: ".count($scan_response->body->Items)."\n";

但是,这必须获取所有项目并将它们存储在内存中的数组中,这在我认为的大多数情况下是不可行的。有没有办法更有效地获取项目总数?

此数据在 AWS Dynamo 网络控制台中不可用,我已经检查过了。 (起初它看起来像显示在分页按钮旁边,但事实证明,随着您转到下一页项目,这个数字会变大)。

最佳答案

我可以想到三个选项来获取 DynamoDB 表中的项目总数。

  1. 第一个选项是使用扫描,但扫描功能效率低下,通常是一种不好的做法,尤其是对于读取量大的表或生产表。

  2. 第二个选项是 Atharva 提到的:

    A better solution that comes to my mind is to maintain the total number of item counts for such tables in a separate table, where each item will have Table name as it's hash key and total number of items in that table as it's non-key attribute. You can then keep this Table possibly named "TotalNumberOfItemsPerTable" updated by making atomic update operations to increment/decrement the total item count for a particular table.

    唯一的问题是增量操作不是幂等的。因此,如果写入失败或您多次写入,这将反射(reflect)在计数中。如果您需要精确定位,请改用条件更新。

  3. 最简单的解决方案是返回 ItemCount 的 DescribeTable。唯一的问题是计数不是最新的。计数每 6 小时更新一次。

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html

关于php - 如何获取 DynamoDB 表中的项目总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com