我必须在DynamoDB中存储一些属性,并且如果某些JSON属性应该存储为String / Binary,则会感到困惑。我知道将它存储为二进制将减少属性的大小。
我认为DDB限制为1读/写IOPS消耗4KB。
即使我将它存储为String,我的项目总数据也不到4KB。
我应该考虑选择二元对比字符串?
感谢。
答案 0 :(得分:0)
鉴于您的项目大小未压缩小于4KB,是否对byte
或string
中的属性进行编码取决于该属性是否为表的分区/范围键以及典型的读取模式。
分区键的最大sz为2048字节,或~2Kb。 排序键(如果在表上指定一个)的最大sz为1024字节,或~1Kb。
如果您预见到string
属性超过任何项目的上述最大值,则首先压缩为二进制以保持属性大小与DynamoDB要求保持一致是有意义的。
根据典型查询中的项目数量以及对限制查询的容忍度,RCU可能无法满足您在单个请求中执行读取的查询/扫描。
例如,
如果您有1KB项目并且想要在一个请求中查询100个项目,那么您的RCU请求将如下所示:
(100 * 1024 bytes = 100 KB) / 4 KB = 25 read capacity units
在这种情况下,将某些属性转换为二进制可能会降低RCU要求。同样,它在很大程度上取决于您的典型使用模式。