19

ハッシュと範囲の複雑なキーを持つテーブルがあります。AWS SDK for Java
を使用してアイテムをクエリできます。オブジェクトが見つからない場合は null を返します。アイテムは として返されGetItemます。 オブジェクトが存在するかどう かを確認するための最速のアプローチを探しています。GetItemMap<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);

もう 1 つの最適化は、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 に答える