Questão de Banco de Dados — Questões Mescladas de SGBDs NoSQL — VUNESP 2023
- Código
- vu196782
- Banca
- VUNESP
- Órgão
- Pref SP
- Ano
- 2023
- Cargo
- AFTM SP
- AMongo e Redis.
- BOrientDB e Cassandra.
- CCassandra e Neo4j.
- DAmazon Dynamo DB e HBase.
- ERiak e Cassandra.
GabaritoC — Cassandra e Neo4j.
Gabarito: letra C. A questão pede, respectivamente, um SGBD predominantemente orientado a colunas e um orientado a grafos — e essa dupla é exatamente Cassandra e Neo4j. O Apache Cassandra é o exemplo clássico de banco colunar (família de colunas, arquitetura descentralizada), enquanto o Neo4j é o representante mais conhecido dos bancos de grafos, que armazenam dados em nós, arestas e propriedades.
Os bancos NoSQL abandonam o modelo relacional rígido de tabelas com esquema fixo e se organizam em quatro grandes famílias: chave-valor, orientado a documentos, orientado a colunas e orientado a grafos. Cada família resolve um problema diferente — cache e sessões, dados semiestruturados e flexíveis, altíssima taxa de escrita distribuída, e relacionamentos complexos, respectivamente. A banca explora exatamente a capacidade de associar cada SGBD ao seu modelo de dados, e a pegadinha clássica é trocar os pares: colocar um banco de documentos onde deveria estar um de colunas, ou um de chave-valor onde deveria estar um de grafos.
Vamos fixar o mapa completo dos quatro modelos, com seus representantes mais cobrados em prova:
Modelo NoSQL | Característica central | SGBD principal |
|---|---|---|
Chave-valor | Estrutura mais simples: uma chave associada a um único valor; busca rápida pela chave; dados opacos (o banco não lê o conteúdo) | Redis, DynamoDB, Riak |
Documentos | Dados semiestruturados em documentos JSON/BSON/XML; esquema flexível; busca pelo conteúdo | MongoDB |
Colunas | Dados em tabelas, linhas e colunas dinâmicas; indexados por (linha, coluna, timestamp); altíssima escrita e escala | Cassandra, HBase, BigTable |
Grafos | Nós, arestas (relacionamentos) e propriedades; excelente para redes sociais, fraudes e rotas | Neo4j, AllegroGraph |
A distinção que decide esta questão é a fronteira entre colunas e documentos. O Cassandra armazena dados em column families (famílias de colunas), com linhas que podem ter colunas diferentes — é um modelo colunar, não documental. O MongoDB, por sua vez, guarda documentos BSON em collections, estrutura análoga a tabelas, mas com flexibilidade de esquema — é o modelo de documentos. Já o Neo4j não trabalha com tabelas nem documentos: modela o mundo como um grafo, onde cada registro é um nó e cada relação é uma aresta, permitindo consultas de profundidade (como "amigos de amigos") que seriam custosas no modelo relacional.
A pegadinha da banca está em inverter os pares ou usar bancos do modelo errado. Por exemplo, a alternativa A coloca Mongo (documentos) e Redis (chave-valor) — nenhum dos dois é colunar ou de grafos. A alternativa D inverte a ordem pedida: DynamoDB é chave-valor e HBase é colunar, mas a questão quer colunas primeiro e grafos depois. A alternativa E usa Riak (chave-valor) e Cassandra (colunas) — dois bancos que não são de grafos. A alternativa B usa OrientDB (que é multi-modelo, mas não é o representante clássico de colunas) e Cassandra (colunas) — além de inverter a ordem, não traz um banco de grafos. A única dupla que atende exatamente ao pedido é Cassandra (colunas) e Neo4j (grafos).
Guarde o critério: para acertar, o aluno precisa saber o modelo de dados de cada SGBD citado — é isso que separa as alternativas.
MongoDB é o representante máximo do modelo orientado a documentos (armazena documentos BSON em collections), e Redis é um banco chave-valor in-memory, usado para cache e sessões. Nenhum dos dois é colunar nem de grafos — a dupla não atende a nenhuma das duas posições pedidas.
OrientDB é um banco multi-modelo (suporta documentos, grafos e chave-valor), mas não é o representante clássico de colunas — esse papel é do Cassandra. Além disso, a ordem está invertida: a questão pede colunas primeiro e grafos depois, e aqui temos OrientDB (que pode ser grafos) e Cassandra (colunas). A dupla não corresponde ao pedido.
Apache Cassandra é o SGBD orientado a colunas por excelência: distribuído, descentralizado (sem nó mestre), com keyspaces e column families, projetado para altíssima taxa de escrita e escala linear. Neo4j é o banco orientado a grafos mais famoso, usando a linguagem Cypher para consultar nós, arestas e propriedades. A dupla atende exatamente à ordem pedida: colunas e grafos.
Amazon DynamoDB é um banco chave-valor (surgido do Dynamo da Amazon para e-commerce), e HBase é orientado a colunas (inspirado no BigTable do Google). A ordem está invertida — a questão pede colunas primeiro e grafos depois — e nenhum dos dois é de grafos.
Riak é um banco chave-valor distribuído, e Cassandra é orientado a colunas. Nenhum dos dois é de grafos, e a dupla não atende à segunda posição pedida (grafos).
A banca adora inverter a ordem dos modelos ou trocar o SGBD pelo modelo errado. Aqui, as alternativas B e D usam bancos reais, mas na ordem errada ou com modelo diferente do pedido — o candidato que decora nomes sem associar ao modelo cai fácil. A dica é sempre montar o par mental: Cassandra = colunas, Neo4j = grafos, MongoDB = documentos, Redis = chave-valor. Com esse mapa, a questão vira uma simples associação.
Gabarito: letra C
Link permanente: /questoes/vu196782