DynamoDb文档中指定的查询操作:



和扫描操作:



最好基于性能和成本方面的考虑。

最佳答案

创建Dynamodb表时,请选择“主键”和“本地二级索引(LSI)”,以便“查询”操作返回所需的项目。

查询操作仅支持对主键进行相等的运算符评估,但对排序键有条件(=,,> =,介于,开始)。

扫描操作通常较慢且较昂贵,因为该操作必须遍历表中的每个项目以获取您要的项目。

例:

Table: CustomerId, AccountType, Country, LastPurchase

Primary Key: CustomerId + AccountType

在此示例中,您可以使用查询操作获取:
  • 在AccountType上带有条件过滤器的CustomerId

  • 需要使用Scan操作返回:
  • 具有特定帐户类型的所有客户
  • 基于国家/地区的条件过滤器的商品,即来自美国的所有客户
  • 基于LastPurchase的条件过滤器的商品,即上个月进行过购买的所有客户

  • 为了避免对经常使用的操作进行扫描操作,请创建本地二级索引(LSI)或全局二级索引(GSI)。

    例:
    Table: CustomerId, AccountType, Country, LastPurchase
    
    Primary Key: CustomerId + AccountType
    GSI: AccountType + CustomerId
    LSI: CustomerId + LastPurchase
    

    在此示例中,查询操作可以使您获得:
  • 在AccountType上带有条件过滤器的CustomerId
  • [GSI]针对特定AccountType的CustomerIds的条件过滤器
  • [LSI]在LastPurchase上带有条件过滤器的CustomerId
  • 关于amazon-web-services - dynamodb中的scan和query有什么区别?什么时候使用扫描/查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43452219/

    10-11 19:08
    查看更多