19

我有一个带有哈希和范围复杂键的表。
我可以使用GetItemAWS SDK for Java 查询项目。如果GetItem没有找到对象,则返回 null,或者将项目作为Map<String, AttributeValue>.
我正在寻找最快的方法来检查对象是否确实存在
我在想可能提供.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 解析器,自己解析响应来快速检查项目是否返回。

谢谢

4

2 回答 2

20

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

瓶颈在于延迟到达 Dynaamo DB 服务器 (REST API) 和从索引中获取。因此,获取和检查的速度将相似。确保发出调用的服务器与 Dynamo DB 位于同一区域 - 这对速度的影响最大。

于 2014-02-11T14:00:27.760 回答
6

通过仅提及哈希键作为要获取的属性,您可以获得更好的性能并且不会浪费您的吞吐量。

于 2012-03-30T08:20:29.247 回答