[英]DynamoDB PartiQL select statement with IN operator on both partition key and sort key - How RCU is calculated?
用例:需要从 Dynamodb 中检索多个 pk(PartitionKey)+sk(SortKey) 组合的数据。 因此,在 pk 和 sk 上都在 partiql 中利用 IN 运算符。
我对 2 种类型的 partiql 模式消耗了多少 RCU 进行了小型 poc。
SELECT * 来自 "test" where pk IN ['12185','05405','14222'] 和 sk IN ['CELL_ID:101','CAM_ID:12185','CAM_ID:05405','CAM_ID:14222', 'CAM_ID:14223'];
SELECT * 来自“测试” where pk IN ['12185','05405','14222'];
问题-
这个问题的答案将帮助我设计查询。 如果 pk 和 sk 上的 IN 运算符是个坏主意,我会坚持只在 pk 上使用 In 运算符并在应用程序端进行 sk 过滤。
使用 PartiQL 时,您需要了解它如何转换为较低级别的 API。
SELECT * from "test"
where pk IN ['12185','05405','14222']
and sk IN ['CELL_ID:101','CAM_ID:12185','CAM_ID:05405','CAM_ID:14222','CAM_ID:14223'];
在这里,您使用 3 个分区键,但 5 个排序键将导致执行 10 个操作。 PartiQL 后端在您需要分页之前只允许 10 个内部GetItem
请求,并且由于您的请求最终是一致的,因此每个消耗 0.5 RCU:
10 * 0.5 = 5RCU 消耗
SELECT * from "test" where pk IN ['12185','05405','14222'];
这将导致 3 Query
操作,每个查询将四舍五入到最接近的 4KB。
3 * 0.5 = 1.5 RCU 消耗
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.