Software Alternatives & Reviews

GraphQL Is a Trap?

GraphQL Cache WunderGraph Prisma GraphQL API GraphQL SQLBolt EdgeDB
  1. GraphQL provides a complete description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
    > Checkout Relay.js: https://relay.dev/ Relay is a GraphQL client. That's the irrelevant side of caching, because that can be trivially implemented by an intern, specially given GraphQL's official copout of caching based on primary keys [1], and doesn't have any meaningful impact on the client's resources. The relevant side of caching is server-side caching: the bits of your system that allow it to fulfill results while skipping the expensive bits, like having to hit the database. [1] https://graphql.org/learn/caching/.

    #Databases #Key-Value Database #NoSQL Databases 4 social mentions

  2. Save 2-4 weeks / 90% of the code building web apps by automating API integrations and security.
    Pricing:
    • Open Source

    #API #GraphQL #ReactJS 54 social mentions

  3. Prisma helps modern applications access and manipulate data through a unified data layer
    Pricing:
    • Open Source
    We have had a wonderful experience with https://prisma.io.

    #Project Management #Workflow Automation #Web Service Automation 63 social mentions

  4. GraphQL is a data query language and runtime to request and deliver data to mobile and web apps.
    Pricing:
    • Open Source
    - GraphQL https://graphql.org/ Or just having a dumb POST /custom/query that maybe only supports read operations. You can add a layer of auth but I'm not a big fan of just having some endpoint that's basically a Pipe to Neo4j. It feels just as bad as saying, typing any SQL here and we'll execute it on the server. If people know what they're doing that's fine..but at that point just setup phpMyAdmin/ pgAdmin. At that point you're trusting folks to know what they're doing and if folks accidently drop Bobby Tables (https://xkcd.com/327/) then it's an accepted risk. If you just have a proxy to run any Cipher query, you might as well just provide users on Neo4J web instance and let them play there. Anyways, still in early stages trying to figure out how to best leverage Neo4J.

    #Developer Tools #Web Frameworks #JavaScript Framework 223 social mentions

  5. SQLBolt provides a set of interactive lessons and exercises to help you learn SQL
    > This might be just over-familiarity on my part, but does SQL really have a strong learning curve, or is it just not used often enough directly these days that people can get by without knowing it? I think the problem is that it's declarative instead of imperative, which is really kind of a shock if you are not used to it (you can't go step by step, there's no debugger, there are no branches etc), and also that you have to think in sets in terms of your solution, which is also awkward when you're not used to it. I think it's definitely worth it though, as nothing we have beats the relational model for CRUD, and there are so many great learning tools online, for example: https://sqlbolt.com/.

    #Online Learning #Online Education #Online Courses 117 social mentions

  6. 6
    EdgeDB is a next-generation graph-relational database that lets you easily build flexible, scalable applications in real-time.
    Pricing:
    • Open Source
    You have to do your own optimiser to avoid, for instance, the N+1 query problem. (Just Google that, plenty of explanations around.) Many GraphQL frameworks have a “naive” subquery implementation that performs N individual subqueries. You either have to override this for each parent/child pairing, or bolt something on the back to delay all the “SELECT * FROM tbl_subquery WHERE id = ?” operations and convert them into one “… WHERE id IN (…)”. Sounds like a great use of your time. In the end you might think to yourself “why am I doing this, when my SQL database already has query optimisation?”. And it’s a fair question, you are onto it. Try one of those auto-GraphQL things instead. EdgeDB (https://edgedb.com) does it as we speak, runs atop Postgres. Save yourself the enormous effort if you’re only building a GraphQL API for a single RBDMS, and not as a façade for a cluster of microservices and databases and external requests. Or just nod to your boss and go back to what being a backend developer has always meant: laboriously building by hand completely ad hoc JSON versions of SQL RBDMS schemas, each terribly unhappy in its own way. In no way does doing it manually but presenting GraphQL deviate from this Sisyphean tradition. I read in the article that NOT having GraphQL exactly match your DB schema is a best practice. My response is “did a backend developer write this?”.

    #Network & Admin #Databases #NoSQL Databases 4 social mentions

Discuss: GraphQL Is a Trap?

Log in or Post with