GraphQL tiene como una de sus características ser completamente independiente del lenguaje y de la base de datos, no tiene mucha relevancia si es una base de datos racional o no racional, incluso puede ser una API REST, es decir se puede escribir con GraphQL por encima de las API de GraphQL.
En GraphQL, el cliente tiene un lenguaje de consulta, luego puede conectarse al Endpoint y definir lo que va a pedir. Esta es la principal diferencia entre GraphQL y REST: quién controla la solicitud. Entre otras diferencias, una que destaca igualmente es que, en GraphQL el desarrollador puede conectarse a un solo Endpoint y encontrar allí toda la información y se puede filtrar según la necesidad, mientras que en REST, el desarrollador debe conectarse a diferentes Endpoints: uno dedicado a los usuarios, otro a los productos, otro a los precios y de acuerdo con lo que obtienes construye la información que necesitas.