我有一个带有哈希和范围复合键的表
我可以使用AWS SDK for Java中的GetItem
查询项目。
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解析器并自己解析响应以快速检查项目是否已返回。
由于
答案 0 :(得分:15)
我认为“获取”和检查它是否存在之间的速度差别可以忽略不计。您可以继续使用GetItem本身。如果项目可能太大,则限制返回的属性。
瓶颈处于到达Dynaamo数据库服务器(REST API)和从索引获取的延迟时间。所以获取和检查将是类似的速度。确保发出呼叫的服务器与Dynamo DB位于同一区域 - 这对速度有最大影响。
答案 1 :(得分:5)
通过仅提及散列键作为要获取的属性,您可以获得更好的性能并且不会浪费您的吞吐量。