

# DynamoDB 項目のサイズと形式
<a name="CapacityUnitCalculations"></a>

DynamoDB テーブルはプライマリキーを除いてスキーマレスです。そのため、テーブルの項目の属性、サイズ、データ型はすべて異なる場合があります。

項目の合計サイズは、属性名と属性値の文字列の長さの合計、および以下に説明するように該当するオーバーヘッドが追加されます。次のガイドラインを使用して属性サイズを予測することができます。
+ 文字列は、UTF-8 バイナリエンコードの Unicode です。文字列のサイズは、**(属性名の UTF-8 でエンコードされたバイト数) \$1 (UTF-8 でエンコードされたバイト数) です。
+ 数値は、有効桁数が最大 38 の可変長です。先頭と末尾の 0 は切り捨てられます。数値のおおよそのサイズは、**(属性名の UTF-8 でエンコードされたバイト数) \$1 (有効桁数 2 あたり 1 バイト) \$1 (1 バイト) です。
+ バイナリ値を DynamoDB に送信するには base64 形式でエンコードする必要がありますが、サイズの計算には値の実際のバイト長が使用されます。バイナリ属性のサイズは、**(属性名の UTF-8 でエンコードされたバイト数) \$1 (raw バイト数) です。
+ null 属性または Boolean 属性のサイズは、**(属性名の UTF-8 でエンコードされたバイト数) \$1 (1 バイト) です。
+ `List` 型または `Map` 型の属性は、その内容にかかわらず、余分な 3 バイトが必要です。`List` または `Map` のサイズは、**(属性名の UTF-8 でエンコードされたバイト数) \$1 (入れ子要素のサイズの合計) \$1 (3 バイト) です。空の `List` または `Map` のサイズは、**(属性名の UTF-8 でエンコードされたバイト数) \$1 (3 バイト) です。
+ `List` または `Map` の各要素には、余分な 1 バイトが必要です。

**注記**  
属性名は長いものよりも短いものにすることをお勧めします。これにより、必要なストレージの量を減らすことができ、使用する RCU/WCU の量を減らすこともできます。

ストレージの請求において、各項目には、有効にした機能に応じて、項目あたりのストレージオーバーヘッドが含まれます。
+ DynamoDB のすべての項目は、インデックス作成に 100 バイトのストレージオーバーヘッドを必要とします。
+ 一部の DynamoDB 機能 (グローバルテーブル、トランザクション、DynamoDB を使用した Kinesis Data Streams の変更データキャプチャ) では、これらの機能を有効にすることでシステムが作成した属性を考慮するために、追加のストレージオーバーヘッドが必要になります。例えば、グローバルテーブルでは、48 バイトのストレージオーバーヘッドがさらに必要になります。