查詢與排序

讀取是帳單被寫下的地方。Query 依鍵瞄準單一項目集合;Scan 則讀取整張表格。出於 SQL 直覺去用帶 filter 的 Scan,你就會為讀到的每個項目付費,而不是只為你留下的那幾個。這就是經典的自爆陷阱。

本節談的是有效率地讀取:用鍵來做事、正確地分頁,以及用 sort key 而非在記憶體中排序來排列結果。

已讀 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 變成只花一小部分成本的 keyed Query。
入門閱讀時間 6 分鐘
DynamoDB 平行掃描
DynamoDB 平行掃描如何用 Segment 與 TotalSegments 把整張資料表的讀取拆分到多個工作者上、它們何時有幫助,以及要避開的吞吐量地雷。
進階閱讀時間 6 分鐘
DynamoDB Sort Key 策略
DynamoDB sort key 策略 — 為範圍查詢、排序,以及在一個 item collection 內的多個存取模式設計可排序的 sort key,附一個 audit-log 演練範例。
中階閱讀時間 8 分鐘
如何以遞減順序查詢 DynamoDB
如何用 ScanIndexForward=false 以遞減順序查詢 DynamoDB — 最新者優先的結果、為何排序發生在 sort key 上,以及如何有效率地往回分頁。
入門閱讀時間 5 分鐘
以會變動(可變)的屬性對 DynamoDB 排序
以會變動的屬性對 DynamoDB 排序 — 為何你無法就地更新鍵屬性、刪除並重建的模式,以及如何用 GSI 讓這個會變動的值存在於基礎表格鍵之外。
中階閱讀時間 5 分鐘
DynamoDB 裡的排序鍵補零
DynamoDB 的排序鍵補零——為什麼在字串排序鍵裡 "10" 會排在 "2" 之前,以及定寬補零的數字如何讓字串順序吻合數字順序。
中階閱讀時間 5 分鐘
知識測驗開始測驗
檢驗你在本節學到的內容。

從 Query 與 Scan 的比較開始 — 它是其餘各篇所仰賴的那個決定。

試用 DynoTable 來對一張線上表格執行這些查詢。