Interroger rapidement une table si elle contient une clé (DynamoDB et Java)
J'ai un tableau avec une valeur de hachage et la gamme complexe de la clé.
Je peux la requête d'un élément à l'aide de GetItem
de SDK AWS pour Java.
Le GetItem
retourne null si il n'a pas trouver l'objet ou l'élément en tant que Map<String, AttributeValue>
.
Je suis à la recherche de l'approche plus rapide pour vérifier si l'objet n'existe pas
Je pensais peut-être la fourniture d'une .withAttributesToGet
tels que:
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);
Une autre optimisation est de ne pas utiliser le SDK JSON et l'analyseur de parser la réponse moi-même pour vérifier rapidement si le retour de l'objet.
Grâce
source d'informationauteur Chen Harel
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il est négligeable différence de vitesse entre "être" et de vérifier s'il existe. Vous pouvez aller de l'avant et utiliser le GetItem lui-même. Si l'article est potentiellement trop grande, alors limiter les attributs retournés.
Le col de la bouteille est dans les temps de latence pour atteindre le Dynaamo DB serveurs (API REST) et dans l'extraction de l'index. Donc, l'Obtention et la vérification sera similaire vitesse. S'assurer que votre serveur de diffusion de l'appel se trouve dans la même région que le Dynamo DB - max impact sur la vitesse.
En mentionnant seulement la clé de hachage comme des attributs pour l'obtenir, vous pourriez avoir de meilleures performances et ne perdez pas votre débit.