Os bancos de dados são fundamentais na área de Tecnologia da Informação, e o entendimento das suas diferenças é recorrente em provas de concurso. Dois grandes grupos se destacam: os bancos de dados relacionais e os bancos NoSQL.
Bancos de dados relacionais surgiram na década de 1970, baseados no modelo proposto por Edgar F. Codd. Sua estrutura é baseada em tabelas, onde linhas representam registros e colunas representam atributos.
O principal padrão utilizado em bancos relacionais é a linguagem SQL (Structured Query Language). Bancos como MySQL, PostgreSQL, Oracle e SQL Server utilizam amplamente essa linguagem.
Uma das características centrais dos bancos relacionais é a adesão às propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade), que garantem a integridade das transações.
Já os bancos de dados NoSQL (“Not Only SQL”) surgiram para atender às necessidades de grandes volumes de dados não estruturados ou semi-estruturados, especialmente em aplicações web, mobile e de Big Data.
Os bancos NoSQL são classificados em quatro grandes tipos: orientados a documentos (ex: MongoDB), chave-valor (ex: Redis), orientados a colunas (ex: Cassandra) e orientados a grafos (ex: Neo4j).
Enquanto bancos relacionais exigem esquema fixo (schema-on-write), bancos NoSQL são mais flexíveis e podem armazenar dados com estrutura variável (schema-on-read).
Em termos de escalabilidade, bancos relacionais tendem a escalar verticalmente (maquinas mais potentes), enquanto bancos NoSQL escalam horizontalmente (mais máquinas comuns).
Concursos costumam explorar também o fato de que bancos NoSQL sacrificam algumas propriedades em prol da escalabilidade, adotando o modelo BASE (Basically Available, Soft state, Eventual consistency).
Outro ponto importante é que bancos relacionais geralmente são preferidos para aplicações que exigem integridade rigorosa dos dados, como sistemas financeiros e bancários.
Bancos NoSQL são mais comuns em cenários de análise de redes sociais, sistemas de recomendação, e aplicativos que precisam lidar com grandes volumes de dados semi-estruturados.
Em provas, é comum serem cobrados cenários para escolher qual tipo de banco é mais adequado para uma determinada situação.
Além disso, é importante lembrar que hoje muitos bancos relacionais evoluíram para incorporar algumas funcionalidades NoSQL, como PostgreSQL com suporte a JSON.
Por fim, é fundamental entender que bancos relacionais e NoSQL não são concorrentes diretos em todos os casos; eles podem ser complementares dependendo do tipo de aplicação.
Para finalizar, duas questões inéditas sobre o tema:
Questões Inéditas
Questão 1 – Sobre bancos de dados relacionais e NoSQL, analise as afirmativas abaixo:
A) Bancos de dados relacionais são preferíveis para aplicações que exigem escalabilidade horizontal e consistência eventual.
B) Bancos NoSQL geralmente são mais adequados para dados altamente estruturados e normalizados.
C) Em bancos relacionais, a linguagem SQL é usada para criar, consultar e gerenciar dados.
D) Bancos NoSQL não aceitam dados semiestruturados, como documentos JSON.
E) Bancos relacionais não podem operar com dados no formato de grafos.
Gabarito: C
Comentários:
- A: Errada. Quem favorece escalabilidade horizontal é o NoSQL.
- B: Errada. Dados altamente estruturados e normalizados é cenário para bancos relacionais.
- C: Correta. SQL é a linguagem padrão dos bancos relacionais.
- D: Errada. Bancos NoSQL são especialistas em dados semiestruturados.
- E: Errada. Existem bancos relacionais com extensões para grafos, como o PostgreSQL com o recurso pgGraph.
Questão 2 – Um analista deseja armazenar grandes volumes de informações provenientes de redes sociais, que mudam frequentemente de formato e não exigem consistência transacional forte. Seria apenas uma base para armazenar essas informações dinâmicas. O tipo de banco de dados mais apropriado seria:
A) Banco de dados relacional com normalização em terceira forma normal.
B) Banco de dados NoSQL orientado a documentos.
C) Banco de dados relacional com suporte ACID estrito.
D) Banco de dados relacional orientado a colunas.
E) Banco de dados NoSQL orientado a grafos.
Gabarito: B
Comentários:
- A: Errada. Normalização não é o foco para dados semi-estruturados de redes sociais.
- B: Correta. Bancos orientados a documentos, como MongoDB, são ideais.
- C: Errada. Consistência ACID não é prioridade aqui.
- D: Errada. Banco relacional por colunas é mais voltado para análises OLAP e de IA.
- E: Errada. Orientação a grafos é para relações complexas, não apenas para armazenar documentos dinâmicos.
Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil? Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos. Clique no link abaixo e inscreva-se:
Participe da conversa