web-dev-qa-db-fra.com

DynamoDB query () contre getItem () pour la récupération d'un élément unique en fonction de l'index

Si je récupère un seul élément de ma table en fonction de la clé de hachage indexée, existe-t-il une différence de performances entre query () ou getItem ()?

45
ensnare

getItem sera plus rapide
getItem récupérer via le hachage et la clé de plage est un ajustement 1: 1, le temps qu'il faut (donc les performances) pour le récupérer est limité par le hachage et le partitionnement en interne.
La requête aboutit à une recherche sur "toutes" les touches de plage. Il ajoute un travail de calcul, donc considéré comme plus lent.

33
Chen Harel

Dans DynamoDB d'Amazon, vos performances sont garanties quelle que soit la méthode d'accès. (vous payez pour cela).

Il peut y avoir quelques millisecondes différences sur les serveurs DynamoDB eux-mêmes comme suggéré par Chen Harel mais ce sont négligeables à cause de la requête HTTP RTT.

Cela dit, c'est une bonne pratique d'émettre un GET au lieu de QUERY lorsque vous avez suffisamment d'informations pour le faire.

19
yadutaf

Comme l'a suggéré un employé d'aws dans l'une des discussions, je cite:

La latence de GetItem vs Query avec limit = 1 sera équivalente.

lien de discussion AWS

1
Deep Patel

Il n'y a aucune différence de performances entre les deux. Le calcul du hachage dans les deux requêtes est effectué 1 par 1. Ce dernier, c'est-à-dire que l'élément get est simplement fourni par analogie avec le référentiel JPA/spring findOne/findById pour faciliter le câblage dans les configurations de câblage Spring Bean/Hibernate.

0
purpleguy