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 ()?
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.
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.
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.
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.