查询与排序

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

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

已读 0/10测验
DynamoDB 中的 Query 对比 Scan
在 DynamoDB 中何时用 Query、何时用 Scan,为什么 Scan 几乎从来不是你想要的,以及如何建模你的键,让 Query 覆盖你的访问模式。
入门阅读约 4 分钟
DynamoDB 中的分页
用 LastEvaluatedKey 和 ExclusiveStartKey 正确地对 DynamoDB 结果分页,为什么 Limit 不是页大小,以及如何向客户端暴露一个无状态游标。
入门阅读约 4 分钟
DynamoDB 筛选策略
DynamoDB 筛选策略对比 —— 分区键、排序键、稀疏索引和 FilterExpression —— 以及哪一个真正削减你的读取账单。
进阶阅读约 7 分钟
为什么 DynamoDB 的 Scan 又慢又贵
为什么 DynamoDB 的 Scan 又慢又贵、它实际向你计费的是什么,以及如何把一个反射式的 Scan 变成只花零头的有键 Query。
入门阅读约 6 分钟
DynamoDB 并行扫描
DynamoDB 并行扫描如何用 Segment 和 TotalSegments 把一次全表读取拆分给多个 worker、它们何时有用,以及要避开的吞吐量自坑。
高级阅读约 6 分钟
DynamoDB 排序键策略
DynamoDB 排序键策略——为范围查询、排序和单个项集合内的多种访问模式设计可排序的排序键,附一个审计日志的演练实例。
进阶阅读约 8 分钟
如何以降序查询 DynamoDB
如何用 ScanIndexForward=false 以降序查询 DynamoDB —— 最新优先的结果、为什么排序发生在排序键上,以及如何高效地反向分页。
入门阅读约 5 分钟
在一个会变化(可变)的属性上排序 DynamoDB
在一个会变化的属性上排序 DynamoDB —— 为什么不能原地更新键属性、删除并重建的模式,以及用 GSI 让易变的值脱离基础表的键。
进阶阅读约 5 分钟
DynamoDB 中的补零排序键
DynamoDB 补零排序键 —— 为什么在字符串排序键里 "10" 排在 "2" 之前,以及定宽补零的数字如何让字符串顺序与数值顺序相符。
进阶阅读约 5 分钟
知识检测开始测验
检验你在本节学到的内容。

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

试用 DynoTable,针对真实的表运行这些查询。