【发布时间】:2019-10-09 06:10:07
【问题描述】:
假设,我们有一种情况,不是获取表中的总计数,而是获取具有特定状态的记录计数。 我们知道 DynamoDb 是无模式的,并且仍然必须对每条记录逐一计数才能获得总计数。 然而,我们如何使用 dynamoDb 查询来利用上述需求?
【问题讨论】:
标签: amazon-dynamodb dynamodb-queries
假设,我们有一种情况,不是获取表中的总计数,而是获取具有特定状态的记录计数。 我们知道 DynamoDb 是无模式的,并且仍然必须对每条记录逐一计数才能获得总计数。 然而,我们如何使用 dynamoDb 查询来利用上述需求?
【问题讨论】:
标签: amazon-dynamodb dynamodb-queries
虽然“查询”或“扫描”请求通常会返回所有匹配项,但您可以传递 Select=COUNT 参数并要求仅检索匹配项的数量,而不是实际项。但在你开始之前,你应该知道一些事情:
DynamoDB 仍会读取 - 您将仍需支付 - 所有数据,即使只是用于计数。使用过滤器进行“扫描”几乎在所有情况下都是不可能的,因为它每次都会读取整个数据集。使用“查询”,您可以要求仅读取一个分区,或一个分区中的一系列连续排序键,在某些情况下这可能是足够合理的(但请在您的用例中考虑是否如此)。
在某些情况下,在数据之外维护一个计数器可能是有意义的。写入会更昂贵(例如,每次写入都会添加数据并增加计数器),但需要此计数器的读取会非常便宜 - 因此这完全取决于您的每个工作负载需要多少。
【讨论】: