2

公式ドキュメントには次のように記載されています。

すべてのアイテム ID の raw バイト サイズ (GB) + アイテムごとに 45 バイト + すべての属性名の raw バイト サイズ (GB) + 属性名ごとに 45 バイト + すべての属性と値のペアの raw バイト サイズ (GB) + 属性ごとに 45 バイト-値のペア

属性と値のペアの生のサイズは? それは正確に値のサイズですか?(そうなると思いますが、なぜ「属性と値のペア」という言葉が使われているのでしょうか?) それとも、属性名のサイズに属性値のサイズを加えたものですか? (その場合、属性に非常に短い名前を付けたくなるでしょう。)

たとえば、下の小さなドメインのサイズは?

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

2 に答える 2

4

各ドメインには 2 つの異なるストレージ サイズがあります。基本サイズには、サイズ クォータ (ドメインあたり 10 GB、Select からの 1 MB 応答) を適用するときに、SimpleDB サービスによって保存され、使用される基本データのみが含まれます。もう 1 つのサイズの数値は請求目的でのみ使用され、インデックス用にバックグラウンドで使用されるストレージも含まれます。両方のストレージ数を計算するために必要な 6 つの値はすべて、DomainMetadata 操作から入手できます。

ベース ストレージの計算

基本ストレージの計算に必要な値は、ItemNamesSizeBytes、AttributeNamesSizeBytes、および AttributeValuesSizeBytes の 3 つだけです。これらの値は、一意のアイテム名の長さ、一意の属性名の長さ、およびすべての属性値の長さの合計を表します。基本ストレージの式は次のとおりです。

baseStorage = 
    ItemNamesSizeBytes + AttributeNamesSizeBytes + AttributeValuesSizeBytes

課金ストレージの計算

課金ストレージ サイズを計算するには、3 つの追加の DomainMetadata 値が必要です。これらはカウントです: ItemCount、AttributeNameCount、および AttributeValueCount。これらの数値は、インデックス エントリに対応する保存済みデータの数を表します。各インデックス エントリには、課金目的でのみ 45 バイトのストレージ料金が発生します。課金ストレージの式は次のとおりです。

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

ノート

「属性と値のペア」という言葉に惑わされないでください。これは、同じであるが異なる属性名で格納されている属性値を区別するためのものです。たとえば、アイテムに次の 2 つの属性ペアを保存する場合: {name: "Violet", favColor: "Violet"} 両方の値 "Violet" を保存すると、それらは異なる属性と値のペアの一部であるため、課金されます。ドキュメントに、アイテムごとの一意の値ごとに課金されると記載されている場合、この例では正確ではありません。

また、SimpleDB に格納されるすべてのデータは、UTF-8 でエンコードされたバイト文字列として格納されます。複数のバイトにエンコードされるすべての文字は、すべての目的 (DomainMetadata 応答、クォータの適用、請求) で複数のバイトとしてカウントされます。

文字エンコーディングに加えて、REST 要求は回線上で URL エンコードする必要があります。この「パーセント エンコーディング」により、さまざまな文字のサイズが 3 倍になります。たとえば、空白文字 ' ' は '%20' になります。このエンコーディングは、ストレージ サイズの計算には影響しません。格納前に SimpleDB 側でデコードされます。

DomainMetadata 値はキャッシュから提供されることもありますが、通常は 24 時間以内です。応答のタイムスタンプをチェックして、値がいつ計算されたかを確認します。実際問題として、これはほとんどの場合、データを追加してすぐに DomainMetadata 値の変化を確認することができないことを意味します。

于 2010-06-11T13:24:22.887 に答える
2

属性名は 1 回だけカウントされます。サンプル ドメインのサイズは次のように計算されます。

  • アイテム名: (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 に答える