Questão de Banco de Dados — Tópicos Mesclados de Outros Tipos e Modelos de Banco de Dados — CESPE / CEBRASPE 2024
- Código
- ce403635
- Banca
- CESPE / CEBRASPE
- Órgão
- BACEN
- Ano
- 2024
- Cargo
- Ana ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. A GraphQL não executa comandos SQL diretamente no SGBD; ela é uma linguagem de consulta para APIs que atua na camada de aplicação, e a comunicação com o banco de dados relacional é feita por meio de um resolvedor (resolver) que pode traduzir a consulta GraphQL em SQL, mas isso não é automático nem intrínseco à GraphQL. A afirmação confunde o papel da GraphQL com o de um driver ou middleware de banco de dados.
A GraphQL é uma especificação de API que permite ao cliente solicitar exatamente os dados de que precisa, em uma única requisição, por meio de um esquema tipado. Ela foi criada pelo Facebook (atual Meta) em 2012 e aberta ao público em 2015. Diferentemente do REST, que expõe recursos por meio de endpoints HTTP (GET, POST, PUT, DELETE), a GraphQL expõe um único endpoint (geralmente /graphql) e o cliente envia uma query ou mutation descrevendo a estrutura dos dados desejados. O servidor processa essa consulta e retorna um JSON com exatamente os campos solicitados.
A relação entre GraphQL e banco de dados é indireta. A GraphQL não é uma linguagem de acesso a banco de dados; ela é uma camada de API. Para obter dados de um banco relacional, o desenvolvedor precisa implementar resolvers — funções que recebem a consulta GraphQL e executam as operações necessárias no banco, geralmente usando SQL ou uma ORM (Object-Relational Mapping). Por exemplo, um resolver para o campo usuario pode executar SELECT * FROM usuarios WHERE id = $1. A GraphQL não sabe nada sobre SQL; ela apenas define o contrato entre cliente e servidor.
A afirmação do item diz que "a GraphQL executa comandos SQL em arquiteturas RESTful diretamente no(s) SGBD(s)". Isso é duplamente incorreto: primeiro, a GraphQL não executa SQL diretamente; segundo, ela não é uma arquitetura RESTful — são paradigmas diferentes de design de API. A GraphQL pode ser usada em conjunto com REST (por exemplo, um servidor GraphQL que consome APIs REST internas), mas não é uma extensão do REST.
A pegadinha da banca está em sugerir que a GraphQL é uma ferramenta de acesso direto a banco de dados, quando na verdade ela é uma camada de API que depende de implementação de resolvers para acessar qualquer fonte de dados (banco relacional, NoSQL, serviços externos, etc.). O candidato que confunde GraphQL com uma linguagem de consulta a banco de dados (como SQL) cai nessa armadilha.
Para a prova, lembre-se: GraphQL é uma linguagem de consulta para APIs, não para bancos de dados. Ela opera no nível de aplicação, e o acesso ao SGBD é feito por código (resolvers) que pode usar SQL, mas isso é uma decisão de implementação, não uma característica da GraphQL.
A afirmação está errada porque atribui à GraphQL a capacidade de executar comandos SQL diretamente no SGBD, o que não é verdade. A GraphQL é uma linguagem de consulta para APIs, que atua na camada de aplicação. Para acessar um banco de dados relacional, é necessário implementar resolvers que traduzam as consultas GraphQL em SQL (ou usar uma ORM). Além disso, a GraphQL não é uma arquitetura RESTful; são abordagens distintas para projetar APIs. A GraphQL pode ser usada em conjunto com REST, mas não é uma extensão dele.
Gabarito: Errado
Link permanente: /questoes/ce403635