查询与排序

读取正是账单产生的地方。Query 通过键定位某一个项集合;Scan 则读取整张表。出于 SQL 的直觉 带着筛选去用 Scan —— 你就会为读取的每一个项付费,而不是你最终保留的那寥寥几个。这正是那个 经典的脚下走火。

本节讲的是如何高效地读取:用键来完成工作、正确地分页,以及用排序键而非在内存中排序来给结果 排序。

已读 0/10测验
DynamoDB 中的 Query 对比 Scan
DynamoDB 中的 Query 与 Scan——Query 只读取一个项目集合并按匹配到的项目计费,而 Scan 会在任何 FilterExpression 生效之前读完整张表。
入门阅读约 5 分钟
DynamoDB 中的分页
用 LastEvaluatedKey 和 ExclusiveStartKey 正确地对 DynamoDB 结果分页,为什么 Limit 不是页大小,以及如何向客户端暴露一个无状态游标。
入门阅读约 4 分钟
DynamoDB 筛选策略
DynamoDB 筛选策略对比——分区键、排序键、稀疏索引和 FilterExpression——以及哪一个真正削减你的读取账单。
进阶阅读约 8 分钟
为什么 DynamoDB Scan 又慢又贵
为什么 DynamoDB Scan 又慢又贵,它实际向你计费的是什么,以及如何把一次条件反射式的 Scan 变成成本只有零头的按键 Query。
入门阅读约 7 分钟
DynamoDB 并行扫描
DynamoDB 并行扫描如何用 Segment 和 TotalSegments 把整表读取拆分给多个工作进程,何时有帮助,以及要避开的吞吐量陷阱。
高级阅读约 7 分钟
DynamoDB 排序键策略
面向范围读取的 DynamoDB 排序键策略——设计一个字节顺序与读取顺序一致的排序键,让一次 Query 服务多种访问模式。
进阶阅读约 8 分钟
如何按降序查询 DynamoDB
用 ScanIndexForward=false 按降序查询 DynamoDB——最新在前的结果、为什么排序发生在排序键上,以及为什么反向读取不额外收费。
入门阅读约 5 分钟
在会变化的属性上给 DynamoDB 排序
在会变化的属性上给 DynamoDB 排序——为什么键属性不可变、删除后重建的模式,以及改把它放到 GSI 排序键上。
进阶阅读约 5 分钟
DynamoDB 中的补零排序键
为什么在 DynamoDB 的字符串排序键里 "10" 会排在 "2" 前面,以及定宽补零如何让字典序的字节顺序与数值顺序一致。
进阶阅读约 5 分钟
知识检测开始测验
检验你在本节学到的内容。

先从 Query 对比 Scan 开始 —— 这是后续一切所依赖的那个决策。

试用 DynoTable,针对真实的表运行这些查询——或者在浏览器里用免费的查询构建器组装一个完整的 Query/Scan 请求。