Python 3.x 如果您使用AttributesToGet参数在DynamoDB上运行扫描,您是为每个项目的数据占用还是仅为请求的属性收费?

Python 3.x 如果您使用AttributesToGet参数在DynamoDB上运行扫描,您是为每个项目的数据占用还是仅为请求的属性收费?,python-3.x,amazon-web-services,amazon-dynamodb,dynamodb-queries,Python 3.x,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,假设您在一个包含1000个400KB大小项的表上运行以下代码,并假设“column1”的属性名+实际数据为10字节: import boto3 def getColumn1Items(): dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('DynamoTable') resp = table.scan(AttributesToGet=['column1']) return resp['I

假设您在一个包含1000个400KB大小项的表上运行以下代码,并假设“column1”的属性名+实际数据为10字节:

import boto3

def getColumn1Items():
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('DynamoTable')
    resp = table.scan(AttributesToGet=['column1'])

    return resp['Items']
检索1000*400KB=400MB的数据检索,或通过运行此查询检索1000*10B=10KB的数据检索,您是否要付费?

基于

请注意,AttributesToGet对配置的吞吐量消耗没有影响。DynamoDB根据项目大小而不是返回给应用程序的数据量来确定消耗的容量单位

检索400 MB数据将收取费用

还要注意,单个扫描请求最多可以检索1 MB的数据。因此,为了检索400 MB的数据,您需要多个请求。

基于

请注意,AttributesToGet对配置的吞吐量消耗没有影响。DynamoDB根据项目大小而不是返回给应用程序的数据量来确定消耗的容量单位

检索400 MB数据将收取费用


还要注意,单个扫描请求最多可以检索1 MB的数据。因此,为了检索400 MB的数据,您需要多个请求。

投影表达式呢@JamesShapiro同样的事情,因为AttributesToGet只是ProjectionExpressionTanks的一个遗留版本,很高兴知道。是否有任何文档可以证明?@JamesShapiro>DynamoDB根据项目大小而不是返回给应用程序的数据量来计算消耗的读取容量单位数。因此,无论您是使用默认行为请求所有属性,还是使用投影表达式仅请求其中一些属性,所消耗的容量单位数都是相同的。无论是否使用过滤器表达式,数字都是相同的。那么投影表达式呢@JamesShapiro同样的事情,因为AttributesToGet只是ProjectionExpressionTanks的一个遗留版本,很高兴知道。是否有任何文档可以证明?@JamesShapiro>DynamoDB根据项目大小而不是返回给应用程序的数据量来计算消耗的读取容量单位数。因此,无论您是使用默认行为请求所有属性,还是使用投影表达式仅请求其中一些属性,所消耗的容量单位数都是相同的。无论是否使用筛选器表达式,该数字都是相同的。