在 nosql dynamodb 表中使用分区键查找总记录数的复杂性?

Bis*_*alG 1 amazon-web-services nosql amazon-dynamodb

我正在设计一个 DynamoDB 数据库表。例如test_table,在一张表中,我定义了一个组合键,其中包含一个分区键(比如)partition_id和一个排序键(比如)sort_id。双方partition_idsort_id可能在他们的条目一些重复的值,但两者的结合partition_id,并sort_id一起将永远是独一无二的。

我想知道,如何有效的是具有一些共有的记录检索partition_id,说partition_id = x

Cha*_*les 5

您的实际问题的答案是……非常低效。

不同于RDBMS,DDB不具有COUNT或任何其他聚合函数......所以得到一个计数的唯一办法是Query()Scan()您的数据,该数据返回到您的应用程序和计算自己的行。

如果您需要聚合,最佳实践是启用 DDB Streams,并将 Lambda 绑定到它来计算和存储您感兴趣的聚合(计数)。

所以在你问的情况下,

partition_id = x

您可以向表中添加另一行(pk=X, sk="COUNT"),每次pk=x插入或删除记录时,lambda 都会更新该行。

然后你可以用一个简单的方法有效地得到计数 GetItem(pk=X, sk="COUNT")

使用全局二级索引进行物化聚合查询文档中的更多信息