Bancos de dados NoSQL: características fundamentais
Gabarito: letra A. As assertivas I e IV estão incorretas, pois os bancos NoSQL são projetados para dados semiestruturados ou não estruturados, com esquemas flexíveis, e não para dados estritamente normalizados com transações ACID rígidas. As assertivas II e III estão corretas, refletindo a escalabilidade horizontal e a consistência eventual, características centrais do paradigma NoSQL.
Os bancos de dados NoSQL (Not Only SQL) surgiram para atender a requisitos de grandes volumes de dados, alta disponibilidade e escalabilidade, especialmente em aplicações web e Big Data. Diferentemente dos bancos relacionais, que seguem o modelo tabular com esquemas rígidos e transações ACID, os bancos NoSQL adotam modelos de dados mais flexíveis, como chave-valor, documentos, colunas e grafos. Essa flexibilidade permite lidar com dados semiestruturados ou não estruturados, onde a estrutura pode variar entre registros, e facilita a escalabilidade horizontal, distribuindo os dados em clusters de máquinas.
A consistência eventual é um modelo de consistência frequentemente adotado em sistemas NoSQL distribuídos. Nesse modelo, as atualizações são propagadas gradualmente entre os nós do cluster, e os dados se tornam consistentes eventualmente, ou seja, após um período de propagação. Isso contrasta com a consistência imediata dos bancos relacionais, que garantem que qualquer leitura reflita a última escrita. A consistência eventual é uma escolha de design que prioriza disponibilidade e tolerância a partição, em detrimento da consistência forte, conforme o Teorema CAP.
Na prática, um banco NoSQL como o MongoDB (orientado a documentos) permite armazenar documentos JSON com estruturas diferentes, sem a necessidade de definir um esquema prévio. Já o Cassandra (orientado a colunas) é otimizado para escrita e leitura em larga escala, sendo usado em sistemas de logs e contadores. Esses bancos são ideais para cenários que exigem alta taxa de leitura/escrita e escalabilidade horizontal, mas não são adequados para aplicações que demandam transações ACID estritas, como sistemas bancários tradicionais.
A pegadinha desta questão está em inverter as características dos bancos NoSQL: a banca apresenta como corretas as características dos bancos relacionais (dados estruturados, normalizados, ACID, esquemas rígidos) e como incorretas as características reais dos NoSQL (dados flexíveis, consistência eventual, escalabilidade). O candidato que não domina o conceito pode ser induzido a marcar as assertivas I e IV como corretas, caindo na armadilha. Guarde a fronteira: NoSQL = flexibilidade, escalabilidade, consistência eventual; SQL = estrutura rígida, ACID, consistência imediata.
Critério | SQL (Relacional) | NoSQL |
|---|
Modelo de dados | Tabelas, esquema rígido | Documentos, colunas, chave-valor, grafos |
Esquema | Fixo, migrações complexas | Flexível, sem esquema prévio |
Transações | ACID estritas | Geralmente sem ACID, consistência eventual |
Escalabilidade | Vertical | Horizontal (clusters) |
Uso típico | Sistemas bancários, dados normalizados | Big Data, alta taxa de leitura/escrita |
Item I — ❌ Incorreto
A assertiva afirma que bancos NoSQL são ideais para dados estruturados e normalizados com transações ACID estritas. Isso é exatamente o oposto da realidade. Os bancos NoSQL são projetados para dados semiestruturados ou não estruturados, com esquemas flexíveis, e geralmente não oferecem transações ACID no sentido estrito. A maioria dos bancos NoSQL sacrifica a consistência forte em favor de disponibilidade e tolerância a partição, adotando a consistência eventual. Portanto, a assertiva está incorreta.
Item II — ✅ Correto
A assertiva afirma que bancos NoSQL, como MongoDB e Cassandra, são projetados para grandes volumes de dados e alta taxa de leitura/escrita. Isso está correto. Esses bancos são explicitamente projetados para execução em clusters, permitindo escalabilidade horizontal e alto desempenho em operações de leitura e escrita. O MongoDB é orientado a documentos, enquanto o Cassandra é orientado a colunas, ambos otimizados para cenários de Big Data e aplicações web de alta demanda.
Item III — ✅ Correto
A assertiva descreve corretamente a consistência eventual, um modelo de consistência frequentemente usado em bancos NoSQL. Nesse modelo, as atualizações são propagadas gradualmente entre os nós, e os dados se tornam consistentes eventualmente, após um período de propagação. Isso significa que uma leitura pode não refletir imediatamente a última escrita, mas eventualmente todos os nós convergem para o mesmo estado. Essa é uma característica fundamental de muitos sistemas NoSQL distribuídos.
Item IV — ❌ Incorreto
A assertiva afirma que bancos NoSQL utilizam esquemas rígidos, tornando a alteração da estrutura dos dados um processo complexo e demorado. Isso é o oposto da realidade. Os bancos NoSQL são conhecidos por sua flexibilidade de esquema, permitindo a inserção de dados sem um esquema predefinido e facilitando alterações na estrutura dos dados. Essa flexibilidade é uma das principais vantagens dos bancos NoSQL em relação aos relacionais, que exigem migrações complexas para alterar o esquema.
Conclusão: Corretos: II e III → portanto a alternativa é a letra A (apenas I e IV estão incorretas).
Gabarito: letra A