

# DynamoDB 项目大小和格式
<a name="CapacityUnitCalculations"></a>

DynamoDB 表是无架构的（主键除外），因此，表中的项目可具有不同的属性、大小和数据类型。

项目的总大小是其属性名称和值的长度总和，加上任何适用的开销，如下所述。您可以使用以下准则来估算属性大小：
+ 字符串是使用 UTF-8 二进制编码的 Unicode。字符串大小为 *（属性名 UTF-8 编码的字节数）\$1（UTF-8 编码的字节数）*。
+ 数字的长度是可变的，最多 38 个有效位。系统会删减开头和结尾的 0。数字大小约为 *（属性名 UTF-8 编码的字节数）\$1（每 2 个有效位对应 1 个字节）\$1（1 个字节）*。
+ 必须先采用 base64 格式对二进制值进行编码，然后才能将其发送到 DynamoDB，不过使用值的原始字节长度来计算大小。二进制属性的大小为 *（属性名 UTF-8 编码的字节数）\$1（原始字节数）*。
+ 空属性或布尔属性的大小为 *（属性名 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 字节的存储开销。