DynamoDB 最佳实践 select 来自 table 所有项目的分页(无 PK)

DynamoDB Best practice to select all items from a table with pagination (Without PK)

我只是想从我的 table 中获取产品列表并分页,分页部分与 last_evaluated_key 相对清楚,但是所有示例都在 PK 或 SK 上使用,但是在我的例子中,我只想获得按 createdAt 排序的分页结果。

我的产品 ID (uniq uuid) 在这种情况下不是很有用。最后一个方案是全扫描table?

是的,您将使用 Scan。 DynamoDB 有两种类型的读取操作,QueryScan。您可以 Query 换 one-and-only-one Partition Key(也可以选择 range of Sort Key values if your table has a compound primary key)。其他一切都是 Scan.

Scan operations 阅读 每个 项,最大 1 MB,可选择过滤。过滤器在读取后应用。结果未排序。

SDK 具有 paginateScan 这样的分页助手,让生活更轻松。

回复:费用。问问自己:“是否 Scan 返回大量我实际上不需要的数据 MB?” 如果答案是 “否” , 你很好。然而,你越是过度获取,Query 相对于 Scan 的成本效益就越大。