【问题标题】:How does Dynamodb Sort the query results when there is no range key avaialble?没有可用的范围键时,Dynamodb 如何对查询结果进行排序?
【发布时间】:2016-08-09 07:00:53
【问题描述】:

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

【问题讨论】:

    标签: sorting amazon-dynamodb


    【解决方案1】:

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

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

    如果您需要订购表格中的所有项目,那么您有几个选择:

    • 在客户端扫描所有数据和订单
    • 为所有项目的分区键创建一个具有公共值的全局二级索引并查询
    • 设计一个补充存储层来提供排序

    需要强调的是,上面的前两个选项只适用于相对较小的表。一旦你在表中达到大约 10GB,拥有一个具有公共密钥的 GSI 将成为一个重要的瓶颈,当然扫描和排序整个表也会成为问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多