我有一个带有哈希和范围复杂键的表。
我可以使用适用于Java的AWS开发工具包中的GetItem查询项目。
如果找不到对象或项目作为GetItemMap<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/

10-10 08:57