DynamoDB Number
与string
类型中数字类型的存储空间是多少?
说我有一个号码(1234789)。如果我将它存储为number
类型,那么它只需要4个字节,而string
则需要7个字节?
DynamoDB是否将所有数字都存储为bigdecimal?
答案 0 :(得分:1)
按照DynamoDB Documentation : Datatypes:
<强>字符串强>
字符串是带有UTF-8二进制编码的Unicode。字符串的长度 必须大于零,并受最大DynamoDB的约束 项目大小限制为400 KB。
如果将主键属性定义为字符串类型属性,则 以下附加限制适用:
- 对于一个简单的主键,第一个属性值(分区键)的最大长度为2048个字节。
- 对于复合主键,第二个属性值(排序键)的最大长度为1024个字节。
醇><强>数强>
数字可以是正数,负数或零。数字最多可达38个 数字精度超过此值将导致异常。
- 正范围:1E-130至9.9999999999999999999999999999999999999E + 125
- 负范围:-9.9999999999999999999999999999999999999E + 125至-1E-130
醇>在DynamoDB中,数字表示为可变长度。领导和 尾随零被修剪。
所有号码都通过网络以字符串形式发送到DynamoDB 最大化语言和库之间的兼容性。然而, DynamoDB将它们视为数学的数字类型属性 操作强>
注意:如果数字精度很重要,则应使用从数字类型转换的字符串将数字传递给DynamoDB。
我希望,这可以帮助您得到答案。
答案 1 :(得分:0)
DynamoDb是一种托管云服务,因此我认为它们在内部存储数据的方式尚不清楚。
但是,他们将Numbers作为字符串转换为语言兼容性支持,影响RCU / WCU的一个因素是传输数据大小。
因此,就您所关注的计算预配置吞吐量和成本而言,数字大小应视为字符串大小。