ハッシュと範囲の複合キーを持つテーブルがあります。
AWS SDK forJavaの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);
もう1つの最適化は、SDK JSONパーサーを使用せず、応答を自分で解析して、アイテムが返されたかどうかをすばやく確認することです。
ありがとう
「取得」と「取得」の速度の違いはごくわずかだと思います。先に進んで、GetItem自体を使用できます。アイテムが大きすぎる可能性がある場合は、返される属性を制限してください。
ボトルネックは、Dynaamo DBサーバー(REST API)に到達するまでの待ち時間と、インデックスからのフェッチにあります。したがって、取得とチェックは同じ速度になります。呼び出しを発行するサーバーがDynamoDBと同じリージョンにあることを確認します-これは速度に最大の影響を与えます。
取得する属性としてハッシュキーのみを指定することで、パフォーマンスが向上し、スループットを無駄にすることがなくなります。