2

官方文档指出:

所有项目 ID 的原始字节大小 (GB) + 每个项目的 45 个字节 + 所有属性名称的原始字节大小 (GB) + 每个属性名称的 45 个字节 + 所有属性值对的原始字节大小 (GB) + 每个属性的 45 个字节-值对

属性值对的原始大小是多少?它是否正是价值的大小?(我希望如此,但为什么它被称为“属性值对”?)或者它是属性名称的大小加上属性值的大小?(在这种情况下,会有动机为您的属性提供真正的短名称。)

例如,下面的小域的大小是多少?

+---------------------------------------------------------+
| Item Name/ID | "Price" attribute | "Calories" attribute |
|--------------+-------------------+----------------------|
| "apple"      | "0000.43"         | "0046"               |
| "orange"     | "0000.70"         | "0053"               |
+---------------------------------------------------------+
4

2 回答 2

4

每个域有两种不同的存储大小。基本大小仅包括您已存储并由 SimpleDB 服务在执行大小配额时使用的基本数据(每个域 10GB,来自 Select 的 1MB 响应)。另一个大小数字仅用于计费目的,还包括在后台用于索引的存储。您需要计算两个存储数量的所有 6 个值都可以从 DomainMetadata 操作中获得。

计算基础存储

计算基本存储只需要三个值:ItemNamesSizeBytes、AttributeNamesSizeBytes 和 AttributeValuesSizeBytes。这些值表示唯一项目名称长度、唯一属性名称长度和所有属性值长度的总和。基础存储公式为:

baseStorage = 
    ItemNamesSizeBytes + AttributeNamesSizeBytes + AttributeValuesSizeBytes

计算计费存储

需要三个额外的 DomainMetadata 值来计算计费存储大小,它们是计数:ItemCount、AttributeNameCount 和 AttributeValueCount。这些数字代表您存储的与索引条目相对应的数据计数。每个索引条目都会产生 45 字节的存储费用,仅用于计费目的。计费存储的公式为:

indexStorage = 45 x (ItemCount + AttributeNameCount + AttributeValueCount)
billingStorage = baseStorage + indexStorage

笔记

不要被“属性值对”语言所迷惑。这只是为了区分相同但使用不同属性名称存储的属性值。例如,如果您将以下两个属性对存储在一个项目中:{name: "Violet", favColor: "Violet"} 您将需要为存储两个值“Violet”而付费,因为它们属于不同的属性-值对。如果文档说您需要为每件商品的每个唯一价值付费,那么对于此示例来说,这将是不准确的。

此外,存储在 SimpleDB 中的所有数据都存储为 UTF-8 编码的字节字符串。对于所有目的(域元数据响应、配额执行和计费),所有编码为多个字节的字符都将计为多个字节。

除了字符编码之外,REST 请求还必须通过网络进行 URL 编码。这种“百分比编码”使各种字符的大小增加了三倍,例如空格字符''变成'%20'。此编码对存储大小计算没有影响。它在存储之前在 SimpleDB 端进行解码。

DomainMetadata 值有时从缓存中提供,但通常少于 24 小时。检查响应中的时间戳以查看计算值的时间。实际上,这意味着在大多数情况下,您将无法添加一些数据并立即看到 DomainMetadata 值发生变化。

于 2010-06-11T13:24:22.887 回答
2

属性名称只计算一次。您的样本域的大小将按如下方式计算:

  • 物品名称:(5 + 45) + (6 + 45) = 101
  • 属性名称:(5 + 45) + (8 + 45) = 103
  • 属性值:(7 + 45) + (4 + 45) + (7 + 45) + (4 + 45) = 202
  • 总计:406 字节

SimpleDB 论坛上的这个线程更详细地讨论了计算:http: //developer.amazonwebservices.com/connect/thread.jspa ?threadID=23527&tstart=0&messageID=96906#96906

于 2010-06-10T22:39:43.740 回答