Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
如果表包含键(DynamoDB和Java),则快速查询表_Java_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

如果表包含键(DynamoDB和Java),则快速查询表

如果表包含键(DynamoDB和Java),则快速查询表,java,amazon-web-services,amazon-dynamodb,Java,Amazon Web Services,Amazon Dynamodb,我有一个带有哈希和范围复合键的表。 我可以使用AWS SDK for Java中的GetItem查询项目。 如果GetItem找不到对象,或者找不到作为映射的项目,则返回null 我正在寻找最快的方法来检查对象是否存在 我在想也许可以提供一个。带有attributestoget,例如: GetItemResult result = dbClient.getItem(new GetItemRequest(). withTableName(TABLE_NAME). with

我有一个带有哈希和范围复合键的表。
我可以使用AWS SDK for Java中的
GetItem
查询项目。 如果
GetItem
找不到对象,或者找不到作为
映射的项目,则返回null

我正在寻找最快的方法来检查对象是否存在
我在想也许可以提供一个
。带有attributestoget
,例如:

GetItemResult result =  dbClient.getItem(new GetItemRequest().
    withTableName(TABLE_NAME).
        withKey(new Key(new AttributeValue().withS(hashKey),
                        new AttributeValue().withS(rangeKey))).
        withAttributesToGet(new ArrayList<String>()));
Map<String, AttributeValue> item = result.getItem();
return (item != null);
GetItemResult=dbClient.getItem(新的GetItemRequest()。
withTableName(表名称)。
withKey(新键)(新属性值())。With(hashKey),
新的AttributeValue().with(rangeKey)))。
withAttributesToGet(newArrayList());
Map item=result.getItem();
返回(项目!=null);
另一个优化是不要使用SDK JSON解析器,而是自己解析响应以快速检查项目是否已返回。


感谢您仅将散列键作为要获取的属性,您可以获得更好的性能,并且不会浪费吞吐量。

我认为“获取”和检查是否存在散列键之间的速度差别可以忽略不计。您可以继续使用GetItem本身。如果项目可能太大,则限制返回的属性


瓶颈在于到达dynamo数据库服务器(restapi)的延迟和从索引获取的延迟。因此,获取和检查的速度将类似。确保发出呼叫的服务器与Dynamo DB位于同一区域-这对速度的影响最大。

您所说的“最快”是什么意思?这里的实际瓶颈是什么?关于限制返回的属性,有没有办法限制使用DynamoDBMapper?我看不到任何方法可以将ProjectionExpression与DynamoDBMapper一起使用。