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

Asa*_*uru 8 sorting amazon-dynamodb

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

Mik*_*scu 5

对于扫描表中的项目,DynamoDB不提供任何排序​​保证(隐式或显式)。按照内部哈希函数将项目映射到表分区的顺序来或多或少地返回项目,但是没有隐式或显式的排序保证。

即使使用排序键,也仅在同一分区键的项目中暗含排序。因此,即使表上有一个范围键,也只能一次查询特定的哈希键来查询项目。

如果您需要订购表中的所有项目,则有一些选择:

  • 扫描客户端上的所有数据和订单
  • 为所有项目的分区键创建一个通用值的全局二级索引,并查询
  • 设计一个互补的存储层以提供订购

需要强调的是,上面的前两个选项仅适用于相对较小的表。一旦您在表中达到约10GB的容量,使用具有公共密钥的GSI就会成为瓶颈,当然扫描和订购整个表也将成为问题。