DynamoDB 项目大小和格式
DynamoDB 表是无架构的(主键除外),因此,表中的项目可具有不同的属性、大小和数据类型。
项目的总大小是其属性名称和值的长度总和,加上任何适用的开销,如下所述。您可以使用以下准则来估算属性大小:
-
字符串是使用 UTF-8 二进制编码的 Unicode。字符串大小为 (属性名 UTF-8 编码的字节数)+(UTF-8 编码的字节数)。
-
数字的长度是可变的,最多 38 个有效位。系统会删减开头和结尾的 0。数字大小约为 (属性名 UTF-8 编码的字节数)+(每 2 个有效位对应 1 个字节)+(1 个字节)。
-
必须先采用 base64 格式对二进制值进行编码,然后才能将其发送到 DynamoDB,不过使用值的原始字节长度来计算大小。二进制属性的大小为 (属性名 UTF-8 编码的字节数)+(原始字节数)。
-
空属性或布尔属性的大小为 (属性名 UTF-8 编码的字节数)+(1 字节)。
-
对于类型为
List
或Map
的属性,不论其内容如何,都需要 3 个字节的开销。List
或Map
的大小为(属性名 UTF-8 编码的字节数)+ 总和(嵌套元素大小)+(3 字节)。空List
或Map
的大小为 (属性名 UTF-8 编码的字节数)+(3 字节)。 -
每个
List
或Map
元素还需要 1 字节的开销。
注意
建议您选择较短的属性名,而不要选择较长的属性名。这可以帮助您减少所需的存储量,但也可能会降低您使用的 RCU/WCU 量。
出于存储计费目的,每个项目都包括按项目的存储开销,这取决于您启用的功能。
-
DynamoDB 中的所有项目都需要 100 字节的存储开销才能进行索引。
-
某些 DynamoDB 功能(全局表、事务、使用 DynamoDB 的 Kinesis Data Streams 更改数据捕获)需要额外的存储开销,才能考虑因启用这些功能而产生的系统创建属性。例如,全局表需要额外 48 字节的存储开销。