构造一个 dynamoDB 表以对表中的 * 项启用 ASC 或 DESC 有序分页

Posted

技术标签:

【中文标题】构造一个 dynamoDB 表以对表中的 * 项启用 ASC 或 DESC 有序分页【英文标题】:Structure a dynamoDB table to enable ASC or DESC ordered pagination on * items in a table 【发布时间】:2012-03-07 10:09:41 【问题描述】:

我想按时间/日期排序,并对表中的所有项目进行分页。 Scan 似乎旨在对所有内容进行分页,但似乎没有“ASC/DESC”等值。 Query 具有 ScanIndexForward 但需要特定的主键。 (无法选择 * ?)

基于first comment of this question,我认为实现此目的的唯一方法是使用公共主键 (!?),然后基于该主键进行查询,重点关注 Range 键。这真的是它应该如何工作的吗?如果我想根据唯一的主键查询单个项目,我必须使用镜像属性创建一个完整的单独表。

请原谅我的 NoSQL 菜鸟。我是一名前端开发人员,只涉足 mysql 和 SimpleDB。

【问题讨论】:

【参考方案1】:

是的,这就是Query 的用途。哈希键标识要翻页的事物列表,范围键指示列表中的位置。如果您可以容忍延迟影响,您只需在表中存储所有被分页的数据都存在的主键,然后您可以发出BatchGetItem 以并行读取一页数据。

重复数据在 NoSQL 中并不是关系模型中的罪恶,您实际上是在手工制作 MySQL 风格的索引。

【讨论】:

以上是关于构造一个 dynamoDB 表以对表中的 * 项启用 ASC 或 DESC 有序分页的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 AWS lambda 函数以对不同 aws 子账户中的 dynamodb 表执行 crud 操作?

如何共享 DynamoDB 表以在组织的其他成员之间保持透明?

AWS AppSync GraphQL - 如何使用 PK/SK 查询而不是扫描整个 dynamoDB 表以获取 graphql 列表 API

如何在 DynamoDB 中查询不存在的(空)属性

常用SQL语句

如何连接表以选择连接表中的最大行? [复制]