Pular para o conteúdo principal

Questão de Banco de Dados — Tópicos Mesclados de Outros Tipos e Modelos de Banco de Dados — CESPE / CEBRASPE 2024

Banco de DadosTópicos Mesclados de Outros Tipos e Modelos de Banco de Dados
Código
ce403635
Banca
CESPE / CEBRASPE
Órgão
BACEN
Ano
2024
Cargo
Ana ( )
A equipe de TIC do BCB necessita desenvolver uma API a ser utilizada em uma solução que o BCB vem desenvolvendo e que será disponibilizada pelo órgão. Como requisitos, tal API deve apresentar: solicitações gerenciadas por HTTP; possibilidade de os clientes solicitarem recursos em qualquer ordem; e isolamento de cada solicitação em relação às outras solicitações. Considerando a situação hipotética anterior, julgue o item que se segue, relativo a RESTful e GraphQL. Na situação em apreço, caso seja necessário que a API consulte dados em uma base de dados relacional compatível com a linguagem SQL, poder-se-á utilizar a GraphQL para obter dados nos servidores em questão, uma vez que a GraphQL executa comandos SQL em arquiteturas RESTful diretamente no(s) sistema(s) de gerenciamento de banco de dados (SGBD) atrelado(s) à solução.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

GraphQL e RESTful: arquiteturas de API e acesso a dados

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.

1O que é
Linguagem de consulta para APIs
Camada de aplicação
Esquema tipado
Endpoint único (/graphql)
2Acesso a dados
Via resolvers
Podem usar SQL ou ORM
Não executa SQL diretamente
3Relação com REST
Paradigmas diferentes
Pode ser usada em conjunto
Não é extensão do REST
GraphQL
LEVELsoulevel.com.br
GraphQL: O que é (Linguagem de consulta para APIs, Camada de aplicação, Esquema tipado, Endpoint único (/graphql)); Acesso a dados (Via resolvers, Podem usar SQL ou ORM, Não executa SQL diretamente); Relação com REST (Paradigmas diferentes, Pode ser usada em conjunto, Não é extensão do REST)

Item — ❌ Errado

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