Questão de Banco de Dados — Documentos (MongoDB e CouchDB) — Quadrix 2024
- Código
- qa630732
- Banca
- Quadrix
- Órgão
- IBICT
- Ano
- 2024
- Cargo
- Tecno ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O MongoDB é um banco de dados NoSQL orientado a documentos, e seu cenário ideal é justamente o oposto do descrito: ele é recomendado quando há dados semiestruturados e pouca necessidade de relacionamentos complexos, pois documentos incorporados reduzem a necessidade de JOINs. A afirmação inverte a lógica, atribuindo ao MongoDB um cenário típico de bancos relacionais, como MySQL e PostgreSQL.
O MongoDB é um SGBD NoSQL do tipo orientado a documentos. Em vez de tabelas com linhas e colunas fixas, ele armazena documentos em formato BSON (representação binária do JSON), organizados em coleções. Cada documento é uma estrutura de pares campo-valor, podendo conter outros documentos, arrays e arrays de documentos. Essa flexibilidade permite que documentos da mesma coleção tenham estruturas diferentes, sem exigir um esquema rígido.
A principal vantagem desse modelo é que os documentos incorporados (embedded documents) reduzem a necessidade de junções caras. Em um banco relacional, para relacionar dados de clientes e pedidos, por exemplo, seria necessário usar chaves estrangeiras e JOINs. No MongoDB, é possível armazenar os pedidos diretamente dentro do documento do cliente, eliminando a necessidade de consultas complexas. Por isso, o MongoDB é ideal para aplicações web, mobile e sistemas que lidam com dados semiestruturados, onde a agilidade no desenvolvimento e a escalabilidade horizontal são mais importantes do que a integridade referencial rígida.
Por outro lado, quando o sistema exige muitos relacionamentos entre entidades, com muitas chaves estrangeiras e JOINs, o modelo relacional (MySQL, PostgreSQL) é o mais indicado. Esses bancos são projetados para garantir a integridade referencial, normalização e consultas complexas envolvendo múltiplas tabelas. O MongoDB, por ser NoSQL, não suporta JOINs nativamente (embora exista o operador $lookup para agregações, ele é menos eficiente e não substitui o JOIN relacional em cenários complexos).
A pegadinha da questão está em inverter o cenário ideal: a banca descreve o caso de uso do banco relacional e o atribui ao MongoDB. O candidato que não conhece a diferença entre os modelos pode cair na armadilha, achando que o MongoDB é um banco relacional ou que ele é indicado para relacionamentos complexos.
A banca inverte o cenário ideal: ela descreve o caso de uso do banco relacional (muitas chaves estrangeiras e JOINs) e o atribui ao MongoDB. Lembre-se: MongoDB é NoSQL orientado a documentos, e sua vantagem é justamente reduzir a necessidade de JOINs com documentos incorporados. Se a questão falar em muitos relacionamentos, pense em banco relacional, não em MongoDB.
Critério | MongoDB (NoSQL) | MySQL/PostgreSQL (Relacional) |
|---|---|---|
Modelo de dados | Documentos BSON flexíveis (sem esquema rígido) | Tabelas com linhas/colunas e esquema fixo |
Relacionamentos | Documentos incorporados (embedded) reduzem necessidade de JOINs | Chaves estrangeiras e JOINs para relacionar entidades |
Cenário ideal | Dados semiestruturados, escalabilidade horizontal, agilidade no desenvolvimento | Integridade referencial, normalização, consultas complexas com múltiplas tabelas |
Suporte a JOINs | Não nativo (apenas | Nativo e otimizado para junções complexas |
A afirmação está errada porque inverte o cenário ideal do MongoDB. O MongoDB é um banco NoSQL orientado a documentos, e sua principal vantagem é a flexibilidade do esquema e a redução de JOINs por meio de documentos incorporados. O cenário descrito — muitos relacionamentos, chaves estrangeiras e JOINs — é típico de bancos relacionais, como MySQL e PostgreSQL, que são projetados para garantir integridade referencial e consultas complexas. Portanto, o MongoDB não é o mais indicado para esse cenário; pelo contrário, ele é recomendado quando há dados semiestruturados e pouca necessidade de relacionamentos complexos.
Gabarito: letra E (ERRADO)
Link permanente: /questoes/qa630732