Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS DynamoDB创建表和检索数据的最佳方法_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

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

Amazon web services AWS DynamoDB创建表和检索数据的最佳方法,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我有下表: 表1 钥匙 属性1 属性2 我需要按Attribute1和Attribute2以及运算符进行查询 设计具有二级索引、全局二级索引等的表的最佳方法是什么?通过属性检索数据的最佳方法是什么?仅通过扫描?假设您的查询要求是 键EQ键值和属性1运算符1值\u 1和属性2运算符2值\u 2 /*其中keyvalue是要使用的哈希键的值,value_1和value_2分别是与Attribute1和Attribute2对应的值*/ 在这种情况下,使用HashKey=key、RangeKey=Att

我有下表:

表1

钥匙 属性1 属性2 我需要按Attribute1和Attribute2以及运算符进行查询


设计具有二级索引、全局二级索引等的表的最佳方法是什么?通过属性检索数据的最佳方法是什么?仅通过扫描?

假设您的查询要求是 键EQ键值和属性1运算符1值\u 1和属性2运算符2值\u 2

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

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

创建查询时,KeyConditions部分将具有

密钥,即散列密钥EQ keyvalue 属性1,即范围键运算符1值\u 1

/*运算符1可以是以下运算符之一-EQ | LE | LT | GE | GT |以|之间开始*/

QueryFilter部分将具有

属性2,即非键属性运算符2值\u 2

/*运算符2可以是以下运算符之一-EQ | NE | LE | LT | GE | GT | NOT | NULL | NULL | CONTAINS | NOT | CONTAINS |以| IN |中间开始|*/

请注意,将根据哈希键和Attribute1获取项目,然后根据Attribute2对项目进行筛选。有关查询API的更多详细信息,请参阅本文档

如果希望查询满足以下场景

key=keyvalue和属性\u 1运算符1值\u 1 键=键值和属性2运算符1值2 然后,您可以定义一个具有HashKey=key、RangeKey=Attribute_1的表和一个全局二级索引GSI,或一个具有索引HashKey=key和索引RangeKey=Attribute2的本地二级索引LSI

有关GSI和LSI之间的比较,请参阅以下文档

谢谢Vivek的解释。但在我的例子中,我不会在搜索中使用键值,而是同时使用这两个属性。