web-dev-qa-db-fra.com

Convertir Graphql en SQL?

Nous avons une base de données SQL Server existante et nous utilisons C #. Disons que notre client mobile envoie un graphql au serveur. Comment puis-je convertir ce code SQL afin que mon client obtienne les données qu'il attend?

12
user960567

GraphQL et SQL, tout en ressemblant, résolvent des problèmes différents. SQL est utilisé pour interroger directement une base de données. GraphQL est utilisé pour interroger des sources de données de tout type, telles que des bases de données (via SQL ou des bibliothèques client), des API et des fichiers statiques. GraphQL peut être comparé aux points de terminaison REST ou aux API ad-hoc.

Une solution serait de créer vous-même l’implémentation GraphQL. GraphQL.org contient de nombreuses informations utiles sur la mise en oeuvre et l’utilisation d’un serveur GraphQL. Si cela vous demande trop de travail, vous pourriez tirer parti de ce projet: GraphQL .NET

Pensez également à rechercher d'autres implémentations GraphQL, telles que ApolloStack . Si vous pouvez séparer votre serveur GraphQL de votre serveur .NET, vous pouvez utiliser ApolloStack ou un autre serveur Javascript GraphQL pour héberger vos données.

15
Alex Anderson

Je vous suggère d’envisager de mettre en œuvre une version C # du référentiel Join Monster, écrite par
Andy Carlson https://github.com/stems/join-monster

Il tente de convertir une requête GraphQL fournie par le client en la requête SQL la plus efficace possible. Il ne prend actuellement pas en charge les relations plusieurs à plusieurs ni les types d'union (associations polymorphes), mais ces objectifs font partie de la feuille de route du référentiel.

6
AjaxLeung

Non, malheureusement, vous ne pouvez pas convertir GraphQL en SQL.

Si votre client vous envoie une requête dans GraphQL, vous n'avez pas d'autre choix que de créer votre serveur GraphQL et d'interroger la base de données à partir de là. 

GraphQL n'est pas SQL. Alors que SQL est un langage de requête de base de données, GraphQL est un langage de requête allant du client au middleware. 

1
LordDave

Vous pouvez aussi regarder une implémentation telle que Postgraphile

En gros, il inspecte chaque requête GraphQL et combine les résolveurs des champs imbriqués en une seule jointure SQL, qui est ensuite résolue de manière récursive.

0
Eli Goldberg