【发布时间】:2016-08-09 07:00:53
【问题描述】:
我有一个仅包含哈希键(分区键)的 Dynamodb 表。此表没有范围键(排序键)。哈希键是一个数值(例如:- 1,2,3... N)当我查询或扫描此表时,他们以哪个顺序发送结果?如果有范围键,它显然会根据范围键值对结果进行升序排序。但是在这种没有 RANGE KEY 的情况下,它的行为如何?
【问题讨论】:
我有一个仅包含哈希键(分区键)的 Dynamodb 表。此表没有范围键(排序键)。哈希键是一个数值(例如:- 1,2,3... N)当我查询或扫描此表时,他们以哪个顺序发送结果?如果有范围键,它显然会根据范围键值对结果进行升序排序。但是在这种没有 RANGE KEY 的情况下,它的行为如何?
【问题讨论】:
DynamoDB 不为扫描表中的项目提供任何排序保证(隐式或显式)。这些项目或多或少按照内部散列函数将项目映射到表的分区的顺序返回,但没有隐式或显式的排序保证。
即使使用排序键,排序也仅隐含在相同分区键的项目中。因此,即使您在表上有一个范围键,也只允许您查询项,以便一次获得特定的哈希键。
如果您需要订购表格中的所有项目,那么您有几个选择:
需要强调的是,上面的前两个选项只适用于相对较小的表。一旦你在表中达到大约 10GB,拥有一个具有公共密钥的 GSI 将成为一个重要的瓶颈,当然扫描和排序整个表也会成为问题。
【讨论】: