所有商品ID +的原始字节大小(GB) 每个项目45个字节+原始字节大小(GB) 所有属性名称+每个45个字节 属性名称+原始字节大小(GB) 所有属性 - 值对+ 45个字节 每个属性值对
属性 - 值对的原始大小是多少?这正是价值的大小吗? (我希望如此,但为什么它的措辞是“属性 - 值对”?)或者是属性名称的大小加上属性值的大小? (在这种情况下,会有动力为你的属性提供真正的短名称。)
例如,下面的小域的大小是多少?
+---------------------------------------------------------+
| Item Name/ID | "Price" attribute | "Calories" attribute |
|--------------+-------------------+----------------------|
| "apple" | "0000.43" | "0046" |
| "orange" | "0000.70" | "0053" |
+---------------------------------------------------------+
答案 0 :(得分:4)
每个域有两种不同的存储大小。基本大小仅包括已存储的基础数据,并且在执行大小配额时由SimpleDB服务使用(每个域10GB,Select的1MB响应)。另一个大小编号仅用于计费目的,还包括索引后台使用的存储。您可以从DomainMetadata操作获得计算这两个存储编号所需的所有6个值。
计算基本存储只需要三个值: 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编码的字节字符串。编码为多个字节的所有字符将计为多个字节用于所有目的(DomainMetadata响应,配额实施和计费)。
除了字符编码之外,REST请求必须通过网络进行URL编码。这种“百分比编码”使各种字符的大小增加三倍,例如空格字符''变为'%20'。此编码对存储大小计算没有影响。它在存储之前在SimpleDB端进行解码。
DomainMetadata值有时是从缓存提供的,但通常不到24小时。检查响应中的时间戳以查看值的计算时间。实际上,这意味着大多数情况下您将无法添加某些数据并立即看到DomainMetadata值发生变化。
答案 1 :(得分:2)
属性名称仅计算一次。您的样本域的大小将按如下方式计算:
SimpleDB论坛上的这个主题更详细地讨论了计算: http://developer.amazonwebservices.com/connect/thread.jspa?threadID=23527&tstart=0&messageID=96906#96906