2015-03-15 2 views

Répondre

0

BatchGetItem ne lèvera pas une exception. Les résultats de ces éléments ne seront pas présents dans la carte Responses dans la réponse. Ceci est également indiqué dans le BatchGetItemdocumentation:

Si un élément requis n'existe pas, il est pas retourné dans le résultat. Les demandes d'articles inexistants consomment les unités de capacité de lecture minimales en fonction du type de lecture. Pour plus d'informations, voir Capacité Calculs d'unités dans le Guide du développeur Amazon DynamoDB.

Ce comportement est également facile à vérifier. Ceci est pour une table avec un attribut clé de hachage nommée customer_id (l'exemple complet que je utilise est here):

dynamoDB.batchGetItem(new BatchGetItemSpec() 
     .withTableKeyAndAttributes(new TableKeysAndAttributes(EXAMPLE_TABLE_NAME) 
       .withHashOnlyKeys("customer_id", "ABCD", "EFGH") 
       .withConsistentRead(true))) 
     .getTableItems() 
     .entrySet() 
     .stream() 
     .forEach(System.out::println); 

dynamoDB.batchGetItem(new BatchGetItemSpec() 
     .withTableKeyAndAttributes(new TableKeysAndAttributes(EXAMPLE_TABLE_NAME) 
       .withHashOnlyKeys("customer_id", "TTTT", "XYZ") 
       .withConsistentRead(true))) 
     .getTableItems() 
     .entrySet() 
     .stream() 
     .forEach(System.out::println); 

Sortie:

example_table=[{ Item: {[email protected], customer_name=Jim, customer_id=ABCD} }, { Item: {[email protected], customer_name=Garret, customer_id=EFGH} }] 
example_table=[] 
+0

Merci Mike. À partir du document, il semble qu'il y ait un problème avec la lecture d'une clé particulière côté serveur, cette clé particulière sera envoyée dans le cadre d'une liste séparée que les clients peuvent réessayer. – Scorpion

+0

Dans ce cas, dynamodb vous facture-t-il des lectures vides ou non? Si je continue à interroger un élément qui n'existe pas dans le tableau, est-ce qu'il va ralentir/consommer ma capacité de lecture? – dushyantashu