我有一个带有哈希和范围复杂键的表。
我可以使用适用于Java的AWS开发工具包中的GetItem
查询项目。
如果找不到对象或项目作为GetItem
,Map<String, AttributeValue>
返回null。
我正在寻找最快的方法来检查对象是否确实存在
我在想也许提供一个.withAttributesToGet
,例如:
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);
另一个优化是不使用SDK JSON解析器,而是自己解析响应以快速检查项目是否已返回。
谢谢
最佳答案
我认为“获取”和检查是否存在之间的速度差异可以忽略不计。您可以继续使用GetItem本身。如果该项目可能太大,则限制返回的属性。
瓶颈在于到达Dynaamo DB服务器(REST API)的延迟以及从索引中获取数据。因此,获取和检查将达到类似的速度。确保发出 call 的服务器与Dynamo DB处于同一区域-这对速度有最大的影响。
关于java - 快速查询表是否包含键(DynamoDB和Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9792529/