DynamoDB 计数操作容量单位消耗

dav*_*ids 5 database amazon-web-services nosql database-performance amazon-dynamodb

如果我没记错的话,要执行项目计数,在 DynamoDB 中我们必须使用查询操作并Select: 'COUNT'作为参数提供。让我们考虑一下,我想计算具有特定分区键的项目数。鉴于我们必须使用该query操作,这是否意味着以下内容?:

  1. 即使我们只返回计数,消耗的读取容量单位也将对应于具有该分区键的所有项目的大小。
  2. 如果具有给定分区键的项目的大小超过 1MB,则计数将是部分的,只会考虑最大 1MB 的项目,并且操作将被分页。

ket*_*iya 8

对于你的两个问题,答案都是肯定的。

从文档中的这两点可以看出这一点:

  • CountScannedCount 的区别:

如果您在请求中使用了 QueryFilter,则 Count 是应用过滤器后返回的项目数,而 ScannedCount 是应用过滤器之前匹配的项目数。

如果您没有在请求中使用过滤器,则 Count 和 ScannedCount 是相同的。

  • DynamoDB 将Count视为另一个可以返回的属性的事实:

您可以检索所有项目属性、特定项目属性、匹配项目的计数,或者在索引的情况下,可以检索投影到索引中的部分或全部属性。

  • 那么通过分区键保存记录计数器的最常见/最有效的方法是什么?使用 DynamoDB Streams + Lambda 在其他地方缓存计数?这是一个巨大的限制,计算记录是一项非常常见的任务。我会理解,如果计数涉及任何其他不是分区键的属性,AWS 人员会为更多的 RCU 收费,但鉴于我们只查询一个索引属性...... (3认同)