Dynamodb One表设计-扫描和过滤限制方法?



所以我遵循一个表的设计和PK键是以下格式

P#product1
P#product2
P#product3
W#warehouse1
W#warehouse2
P#product4
....

使用这个查询模式"获取所有产品"我需要进行扫描以获取所有记录。begins_with = P#";我不确定这是否是理想的方法。我知道Scan很消耗资源(我也不希望依赖它)。更不用说,如果我想输入极限&分页时,场景变得更加麻烦(因为在过滤器之前应用了限制)。例如:限制为10的第一次扫描可能只返回3个产品,下一次可能只返回2个,等等)

有没有更直接的方法?我希望至少扫描1000条记录中的87种产品,并且仍然能够得到9页10种产品。

我遇到过其他论坛主题,并发现了这个解决方案,我们可以利用Dynamodb全球二级索引基本上:

  • 我们将设置一个属性,例如entitytype(值可以是product,warehouse…)
  • 创建全局二级索引GSI PK:设置为该实体类型GSI SK:设置为原PK
  • 我们最终会在这个GSI中得到以下内容产品P # product1产品P # product2仓库W # warehouse1

我们可以使用query entitytype=product

查询GSI

最新更新