什么是DynamoDB数字和字符串数据类型的存储空间?

4

DynamoDB中Numberstring类型的存储空间有什么不同呢?

假设我有一个数字(1234789)。如果我将其存储为number类型,则只需要4个字节,而作为string类型则需要7个字节?

DynamoDB是否将所有数字都存储为bigdecimal?


可能是DynamoDB的ItemSize问题的重复。 - RomanMinkin
2个回答

1
DynamoDb是一项托管的云服务,因此我认为他们内部存储数据的方式并不清楚。
但是,为了支持语言兼容性,他们将数字转换为字符串,并且影响RCU/WCU的因素之一是转移数据大小。
因此,就计算预配吞吐量和成本而言,数字大小应被视为字符串大小。

0
根据DynamoDB文档:数据类型:

字符串

字符串采用UTF-8二进制编码的Unicode。字符串的长度必须大于零,并受到DynamoDB项大小限制400 KB的约束。

如果您将主键属性定义为字符串类型属性,则适用以下附加约束:

  1. 对于简单主键,第一个属性值(分区键)的最大长度为2048字节。
  2. 对于复合主键,第二个属性值(排序键)的最大长度为1024字节。

数字

数字可以是正数、负数或零。数字的精度可达到38位,超过这个范围将导致异常。

  1. 正数范围:1E-130至9.9999999999999999999999999999999999999E+125
  2. 负数范围:-9.9999999999999999999999999999999999999E+125至-1E-130

在DynamoDB中,数字表示为可变长度。前导和尾随零被修剪。

所有数字都作为字符串发送到DynamoDB,以最大化跨语言和库的兼容性。但是,DynamoDB将它们视为数值类型属性进行数学运算。

注意:如果数字精度很重要,您应该使用从数字类型转换而来的字符串将数字传递给DynamoDB。

我希望这可以帮助你找到答案。


@user1846749,这个有帮助解决你的问题吗? - LuFFy
一个数字排序键在存储中将占用多少字节? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接