4 ms·
Things have matured quite a bit. With Apollo Server it's possible to fully understand which fields are being requested before creating and running, for example,
by greenpizza13 7y ago
Things have matured quite a bit. With Apollo Server it's possible to fully understand which fields are being requested before creating and running, for example, and SQL query. Fetching only the requested data for a given query reduces in-memory footprint. Most people get the whole data object and then allow GQL to select the subset of fields the user asked for, but for cases where performance is a problem there is another solution.
- andrewem 7y agoYou say "problem there is another solution" - what is the other solution? (I'm guessing it involves somehow telling Apollo Server which fields/related objects you will need?)
- picardo 7y agoI haven't used Apollo Server lately. But the way you describe it doesn't address the core issue, which is the initialization of the intermediate objects in-memory. So just to give an example, if I wanted to query for the projects of listings of my company, I can write it this way in GQL: me { company { listings { projects { id name } } } } This will initialize: a User, a Company, Listings and Projects of all listings. I can also write this in SQL using a couple of joins and return an array. The memory consumption is trivial in comparison to the original request.
- klarstrup 7y agoYou can implement your GraphQL server to do either of those, it's not inherent.