Questão
ID 67554Disciplina: Tecnologia da Informação
Assuntos: Chaves e Relacionamentos, Conceitos Básicos do Modelo Relacional
Ano: 2025 Banca: PERFIL - ENADE Órgão: Quarto Simulado Pnd
Um professor de um curso de Desenvolvimento de Sistemas está ensinando sobre a diferença entre bancos de dados SQL e NoSQL. Ele quer que os alunos compreendam que a escolha não é sobre qual é 'melhor' em absoluto, mas qual é mais adequado para um determinado caso de uso. Ele foca na diferença de modelo de dados e de esquema. Ele explica: "Bancos de dados **SQL**, como o MySQL ou PostgreSQL, usam um modelo de dados **relacional**, com dados organizados em tabelas com linhas e colunas, e um **esquema rígido** (schema-on-write), onde a estrutura da tabela deve ser definida antes de inserir os dados. Eles são excelentes para dados bem estruturados e quando a consistência é crucial. Bancos de dados **NoSQL** vêm em vários modelos (documentos, chave-valor, colunar, grafo). Um banco de dados de **grafos**, como o Neo4j, é projetado especificamente para armazenar e navegar por relacionamentos. Ele usa um modelo de dados de **nós** (ou vértices), **relacionamentos** (ou arestas) e **propriedades**. Ele é otimizado para consultas que exploram conexões complexas, como 'encontre todos os amigos dos meus amigos que gostam de um determinado filme'." Ele então propõe um cenário: o desenvolvimento do backend para uma rede social profissional, como o LinkedIn.
A principal funcionalidade do sistema é analisar e recomendar conexões entre profissionais. Por exemplo: 'Qual é o caminho de conexão mais curto entre a CEO da Empresa A e o Engenheiro da Empresa B?' ou 'Quais pessoas eu talvez conheça que trabalharam na mesma empresa que meu ex-colega?'.
Avaliando o cenário, analise as seguintes afirmações sobre a escolha do banco de dados.
I. Um banco de dados relacional (SQL) poderia modelar o sistema com tabelas para 'Pessoas' e 'Conexões', mas consultas complexas que atravessam múltiplos níveis de relacionamento (amigos de amigos de amigos) seriam lentas e exigiriam múltiplas operações de `JOIN`.
II. Um banco de dados de grafos (NoSQL) é naturalmente adequado para este problema. As pessoas seriam os 'nós' e as conexões (ex: 'é colega de', 'trabalhou em') seriam os 'relacionamentos'. Consultas sobre conexões e caminhos são extremamente eficientes em um banco de dados de grafos, pois os relacionamentos são armazenados como 'cidadãos de primeira classe'.
III. A escolha do banco de dados é irrelevante, pois o desempenho dependerá exclusivamente da linguagem de programação usada no backend, e não do modelo de dados.
É correto o que se afirma em: