首页 文章

当没有范围键可用时,Dynamodb如何对查询结果进行排序?

提问于
浏览
6

我有一个Dynamodb表,只包含一个哈希键(分区键) . 此表没有范围键(排序键) . 哈希键是一个数值(例如: - 1,2,3 ... N)当我查询或扫描此表时,他们将结果发送到哪个顺序?如果有一个范围键,它显然会根据范围键值按升序对结果进行排序 . 但在没有RANGE KEY的情况下,它的表现如何?

1 回答

  • 3

    DynamoDB不提供从表中扫描项目的任何排序保证(隐式或显式) . 这些项或多或少按内部散列函数将项映射到表的分区的顺序返回,但没有隐式或显式排序保证 .

    即使使用排序键,也只在同一分区键的项目中隐含排序 . 因此,即使您在表上有一个范围键,也只允许您查询项目,以便一次输入特定的哈希键 .

    如果您需要订购表中的所有项目,那么您有几个选项: - 扫描客户端上的所有数据和订单 - 创建一个全局二级索引,其中包含所有项目的分区键的公共值并查询 - 设计补充存储图层提供排序

    重要的是要强调上面的前两个选项仅适用于相对较小的表 . 一旦你在表格中达到大约10GB,带有共用密钥的GSI将成为一个重要的瓶颈,当然扫描和订购整个表格也会成为问题 .

相关问题