AWS DynamoDB创建表和检索数据的最佳方法

时间:2014-08-02 22:06:35

标签: amazon-web-services amazon-dynamodb

我有下表:

表1

  • 关键
  • ATTRIBUTE1
  • Attribute2

我需要通过Attribute1和Attribute2(以及运算符)进行查询。

设计表的最佳方法是什么(使用二级索引,全局二级索引等)以及通过属性检索数据的最佳方式(性能)是什么?只能通过扫描?

1 个答案:

答案 0 :(得分:0)

假设您的查询要求是 key EQ keyvalue AND Attribute1 OPERATOR1 value_1 AND Attribute2 OPERATOR2 value_2

/ *其中keyvalue是您要使用的哈希键的值,value_1和value_2分别是对应于Attribute1和Attribute2的值* /

在这种情况下,使用HashKey = key,RangeKey = Attribute1或Attribute2定义一个表 - 以较高的基数为准。让我们假设Attribute1具有更高的基数

创建查询时, KeyConditions部分将有

密钥(即散列密钥)EQ密钥值
属性1(即范围键)OPERATOR1 value_1

/ * OPERATOR1可以是以下运算符之一 - EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN * /

QueryFilter部分将有

Attribute2(即非键属性)OPERATOR2 value_2

/ * OPERATOR2可以是以下运算符之一 - EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL |包含| NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN * /

请注意,将根据哈希键和Attribute1获取项目,然后根据Attribute2过滤它们。有关查询API的更多详细信息,请参阅此文档http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

如果您希望查询满足以下方案

  1. key = keyvalue AND Attribute_1 OPERATOR1 Value_1
  2. Key = keyvalue AND Attribute_2 OPERATOR1 Value_2
  3. 然后,您可以使用HashKey = key,RangeKey = Attribute_1以及具有Index HashKey = key和Index RangeKey = Attribute2的全局二级索引(GSI)或本地二级索引(LSI)来定义表。

    有关GSI和LSI之间的比较,请参阅以下文档 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SecondaryIndexes.html