Dynamodb GSI查询:排序键的作用

时间:2017-05-25 20:33:38

标签: indexing amazon-dynamodb

我一直在阅读关于使用GSI的最佳方式的问题,而DynamoDB : Global Secondary Index utilisation in queries接近我需要的问题,但我仍然有一些问题。

我有一个场景,我的产品表包含字段:

product_id (partitions_key), product_name, launch_year, manufacturer

我需要进行以下三种类型的查询:

1. product_name=?
2. product_name=? AND launch_year=?
3. product_name=? AND manufacturer=?

根据我的理解,基于product_name创建一个GSI将服务于所有3个目的。 我想了解的是,将使用launch_year和制造商增加2个GSI作为排序键,加快查询2和3的速度? sort键的唯一目的是返回已排序的数据,还是Dynamodb查询会以某种方式利用感兴趣的字段排序的事实?

1 个答案:

答案 0 :(得分:0)

无需再创建两个索引。原因是: -

  1. 会增加额外费用。拥有多个GSI将花费您的读写容量单位
  2. 此外,对于上述2个用例,不需要。您可以使用FilterExpressionslaunch_yearmanufacturer
  3. 过滤数据
  4. 另一个选择是只有一个具有product_namelaunch_year的GSI。所以你有2个用例。对于第三个用例,您可以使用FilterExpression
  5. 在所有这些选项中,您仍然可以使用查询API,因为您拥有分区键product_name