如果表包含键(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一起使用。