将属性存储为二进制或字符串(JSON)

时间:2016-03-07 23:14:01

标签: database amazon-dynamodb

我必须在DynamoDB中存储一些属性,并且如果某些JSON属性应该存储为String / Binary,则会感到困惑。我知道将它存储为二进制将减少属性的大小。

我认为DDB限制为1读/写IOPS消耗4KB。

即使我将它存储为String,我的项目总数据也不到4KB。

我应该考虑选择二元对比字符串?

感谢。

1 个答案:

答案 0 :(得分:0)

鉴于您的项目大小未压缩小于4KB,是否对bytestring中的属性进行编码取决于该属性是否为表的分区/范围键以及典型的读取模式。

分区键的最大sz为2048字节,或~2Kb。 排序键(如果在表上指定一个)的最大sz为1024字节,或~1Kb。

如果您预见到string属性超过任何项目的上述最大值,则首先压缩为二进制以保持属性大小与DynamoDB要求保持一致是有意义的。

根据典型查询中的项目数量以及对限制查询的容忍度,RCU可能无法满足您在单个请求中执行读取的查询/扫描。

例如, 如果您有1KB项目并且想要在一个请求中查询100个项目,那么您的RCU请求将如下所示: (100 * 1024 bytes = 100 KB) / 4 KB = 25 read capacity units 在这种情况下,将某些属性转换为二进制可能会降低RCU要求。同样,它在很大程度上取决于您的典型使用模式。

请参阅http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html#HowItWorks.ProvisionedThroughput.Reads