web-dev-qa-db-fra.com

Qu'est-ce que le sur-chargement ou le sous-chargement?

J'ai joué parfois avec graphQL. Avant graphQL, nous utilisons normalement REST. De nombreux développeurs ont déclaré que graphQL corrige certains problèmes de REST (par exemple, sur-récupération et sous-récupération). Je confond avec ces termes.

Quelqu'un peut-il expliquer ce qui est exagéré dans ce contexte?

Merci,

24
Saber Alex

La surexploitation récupère trop de données, ce qui signifie qu'il y a des données dans la réponse que vous n'utilisez pas.

La sous-extraction n'apporte pas suffisamment de données avec un appel à un point de terminaison, ce qui vous oblige à appeler un deuxième point de terminaison.

Dans les deux cas, ce sont des problèmes de performances: soit vous utilisez plus de bande passante que vous ne le devriez, soit vous faites plus de requêtes HTTP que vous ne le devriez.

Dans un monde parfait, ces problèmes ne se poseraient jamais; vous auriez exactement les bons points de terminaison pour donner exactement les bonnes données à vos produits.

Ces problèmes apparaissent souvent lorsque vous mettez à l'échelle et parcourez vos produits. Les données que vous utilisez sur vos pages changent souvent et le coût de maintenance d'un point de terminaison séparé avec exactement les bonnes données pour chaque composant devient trop élevé.

Ainsi, vous vous retrouvez avec un compromis entre ne pas avoir trop de points de terminaison et avoir les points de terminaison qui correspondent le mieux à chaque composant. Cela entraînera une récupération excessive dans certains cas (le point de terminaison fournira plus de données que nécessaire pour un composant spécifique) et une sous-récupération dans certains autres (vous devrez appeler un deuxième point de terminaison).


GraphQL résout ce problème car il vous permet de demander quelles données vous souhaitez au serveur. Vous spécifiez ce dont vous avez besoin et obtiendrez ces données, et uniquement ces données, en un seul voyage vers le serveur.

50
yachaka

Récupération excessive et sous-récupération Dans un langage dynamique comme Ruby, la récupération excessive et insuffisante sont deux pièges courants.

Récupération excessive La récupération excessive se produit lorsque des champs supplémentaires sont déclarés dans un fragment mais ne sont pas réellement utilisés dans le modèle. Cela se produira probablement lorsque le code du modèle est modifié pour supprimer l'utilisation d'un certain champ.

Si le fragment n'est pas mis à jour avec cette modification, la propriété sera toujours récupérée lorsque nous n'en aurons plus besoin. Un simple champ de titre peut ne pas être un gros problème dans la pratique, mais cette propriété aurait pu être un arbre de données imbriqué plus cher.

Sous-extraction La sous-extraction se produit lorsque les champs ne sont pas déclarés dans un fragment mais sont utilisés dans le modèle. Ces données manquantes apparaîtront probablement sous la forme d'une valeur NoFieldError ou nil.

Pire, il peut y avoir un bogue latent de sous-extraction lorsqu'un modèle ne déclare pas de dépendance de données mais semble fonctionner parce que son appelant arrive à récupérer les données correctes en amont. Mais lorsque ce même modèle est rendu à partir d'un chemin différent, il génère des erreurs sur les données manquantes.

0
ATIQ UR REHMAN