【问题标题】:DynamoDB: Making range query v/s query each item separatelyDynamoDB:进行范围查询v / s分别查询每个项目
【发布时间】:2017-09-07 15:58:40
【问题描述】:
比方说,我在 dynamodb 中有几个项目具有相同的分区键和不同的排序键。
如果我在单个 go v/s 单独查询每个项目中使用排序键约束查询记录,消耗的读取容量单位之间有什么区别吗?假设一次要获取的排序键数量约为 50。official-documentation 表示
一个读取容量单位代表一个强一致性读取
秒,或每秒两次最终一致的读取,用于向上的项目
大小为 4 KB。
从这个定义来看,似乎应该没有区别,因为这个定义与我们查询数据库的方式无关。
除了额外的网络延迟之外,第二种方法还有其他缺点吗?
【问题讨论】:
标签:
amazon-web-services
amazon-dynamodb
【解决方案1】:
请注意,成本计算基于读取容量单位 (RCU) 和写入容量单位 (WCU)。
RCU公式:-
RCU = read capacity unit per item × number of reads per second
在进行以下计算之前,请计算项目大小。您可以从 AWS 控制台获取项目大小。
转到 AWS 控制台上的 dynamodb 表 --> 概览选项卡 --> 见底部。
让我们谈谈 RCU。在上述情况下,
场景 1 - 仅使用哈希键一次性获取所有数据:-
在这种情况下,读取的项目数会很高(即 50 个项目数据)。计算大小并检查需要多少个 RCU。
场景 2 - 使用哈希键和排序键多次获取数据:-
在这种情况下,API 将被多次调用。因此,每秒的读取次数会增加。计算所需的读取次数并检查需要多少 RCU。
比较方案1和2计算的RCU,选择RCU少的选项以节省成本。