作为主键,我有一个食谱的ID,排序键是食物的类型(早餐,进餐,点心等)。
是否可以通过扫描或查询来获取具有给定排序键的所有项目?
答案 0 :(得分:1)
正如其他人在评论中指出的那样,您无法查询排序键,因为没有操作可以给出具有相同排序键的项目列表。
实际上,排序键的全部原因通常是为了在特定分区中订购商品。
将两者放在一起,您需要的是一种按食物类型对商品进行分区,然后对其进行查询的方法。输入Global Secondary Index (GSI)。
借助GSI,您可以将表中的数据编入索引,从而食物类型成为分区键,而其他一些属性则成为排序键。然后,通过查询就可以获取与特定食物类型匹配的所有项目。
请记住以下几点:
更多准则:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-general.html
但是在开始创建GSI之前,请先考虑一下表的架构:选择分区键似乎不太理想。一方面,将食谱ID用作分区键非常有用,因为它可能会导致很好的数据传播,但另一方面,您将无法在不创建GSI的情况下在表上使用查询。
可以考虑创建一个由食物类型和其他属性组成的分区键,而不是将配方ID作为分区键。这样,您实际上可以查询食物类型,或者发出多个查询以检索特定食物类型的所有项目。