Código SQL copiado para a área de transferência
RU EN FR

Lição 1.2 · Tempo de leitura: ~15 min

Existem muitos tipos de bases de dados, cada um otimizado para um tipo específico de dados, padrão de consulta ou requisito de escalabilidade. Nesta lição, aprenderá os principais modelos — relacionais, chave-valor, documentais, colunas largas, grafo, séries temporais e colunares — com as suas diferenças, casos de uso típicos e exemplos de sistemas reais.

Tipos de Bases de Dados: Relacionais, NoSQL e Outros Modelos

Na lição anterior, introduzimos a ideia geral de uma base de dados e de um SGBD. Na prática, nem todas as bases de dados são construídas da mesma forma. Diferentes tipos são otimizados para diferentes tipos de dados, padrões de consulta, requisitos de escalabilidade e necessidades de consistência.

Também vamos olhar com mais atenção para as bases de dados relacionais, porque continuarão a ser o nosso principal foco ao longo deste curso.

Diagrama que mostra os principais tipos de bases de dados, incluindo relacionais, chave-valor, documentais, grafo, séries temporais, colunares, colunas largas, em memória e de pesquisa

Porque Existem Diferentes Tipos de Bases de Dados?

Nenhum modelo único é perfeito para todas as aplicações.

Por exemplo:

  • Um sistema bancário precisa de forte consistência e transações fiáveis.
  • Um sistema de caching precisa de pesquisas por chave extremamente rápidas.
  • Uma rede social pode precisar de armazenamento documental flexível e análise de relações em estilo grafo.
  • Uma plataforma analítica pode precisar de analisar milhares de milhões de valores de forma eficiente.

Como sistemas diferentes resolvem problemas diferentes, vários modelos de bases de dados surgiram ao longo do tempo.

Principais Tipos de Bases de Dados: Tabela Comparativa

Comparação rápida antes de analisarmos cada tipo em detalhe:

TipoModelo de DadosPontos FortesCasos de UsoExemplos
RelacionalTabelas com linhas e colunasForte consistência, SQL, joins, dados estruturadosBanca, ERP, CRM, e-commerce, relatóriosPostgreSQL, MySQL, MariaDB, SQLite, Oracle
Chave-ValorChave associada a um valorPesquisas muito rápidas, escalabilidade simplesCaching, sessões, feature flags, carrinhosRedis, Amazon DynamoDB, Riak
DocumentalDocumentos do tipo JSONEsquema flexível, dados aninhadosGestão de conteúdo, perfis, catálogosMongoDB, Couchbase, Firestore
Colunas LargasLinhas com colunas flexíveis em famíliasAlta taxa de escrita, escalabilidade horizontalRegisto de eventos, IoT, cargas distribuídasApache Cassandra, HBase, ScyllaDB
GrafoNós e arestasConsultas centradas em relaçõesRedes sociais, deteção de fraude, recomendaçõesNeo4j, Amazon Neptune, ArangoDB
Séries TemporaisRegistos com marca temporalIngestão e agregação eficientes ao longo do tempoMonitorização, métricas, sensoresInfluxDB, TimescaleDB, OpenTSDB
Colunar AnalíticaDados por coluna em vez de por linhaAnálises e agregações rápidasBI, dashboards, data warehousing, OLAPClickHouse, DuckDB, Amazon Redshift, BigQuery
Em MemóriaDados principalmente em RAMLatência extremamente baixaCaching, leaderboards, contadores em tempo realRedis, Memcached, SAP HANA

Bases de Dados Relacionais

As bases de dados relacionais armazenam os dados em tabelas compostas por linhas e colunas. As tabelas podem ser ligadas entre si através de relações, normalmente usando chaves primárias e chaves estrangeiras.

Este modelo é especialmente adequado quando os dados estão bem estruturados e quando a correção, a consistência e as consultas complexas são importantes.

Propriedades Fundamentais das Bases Relacionais

1. Esquema estruturado — exige um esquema claramente definido com tabelas, colunas, tipos de dados, restrições e relações. Torna a estrutura previsível e fácil de validar.

2. Relações entre tabelas — capacidade de modelar relações explicitamente entre entidades (ex. customersordersorder_items). Ideal para sistemas de negócio.

3. Suporte a SQL — linguagem padrão para filtrar, juntar, agregar, ordenar e modificar dados estruturados.

4. Transações ACID :

  • Atomicidade: uma transação é totalmente bem-sucedida ou falha por completo.
  • Consistência: os dados permanecem válidos segundo as regras definidas.
  • Isolamento: transações concorrentes não interferem incorretamente.
  • Durabilidade: dados confirmados são mantidos mesmo após falhas.

5. Restrições de integridade — chaves primárias, estrangeiras, unicidade, NOT NULL, CHECK para evitar dados inválidos.

6. Joins poderosos — ideais para combinar dados de várias tabelas em relatórios e análises.

7. Normalização — redução de duplicação através de tabelas relacionadas.

Casos de Uso Comuns

As bases relacionais são a melhor escolha quando os dados são estruturados, as relações são importantes, as transações devem ser fiáveis e são necessárias consultas complexas.

Exemplos

  • PostgreSQL, MySQL, MariaDB, SQLite, Oracle Database, Microsoft SQL Server

Bases de Dados Chave-Valor

Armazenam dados como um par simples chave + valor. Acesso direto por chave — modelo muito simples e muito rápido.

Casos de uso: cache, sessões, carrinhos, feature flags, leaderboards.

Exemplos: Redis, Amazon DynamoDB, Riak

Bases de Dados Documentais

Armazenam dados como documentos JSON. Cada documento pode ter uma estrutura diferente.

Casos de uso: gestão de conteúdo, catálogos de produtos, perfis de utilizador, aplicações web e móveis.

Exemplos: MongoDB, Couchbase, Google Firestore

Bases de Dados de Colunas Largas

Armazenam dados em linhas com um conjunto flexível de colunas. Concebidas para distribuição por muitos servidores e alta taxa de escrita.

Casos de uso: registo de eventos, IoT, sistemas de mensagens, sistemas distribuídos geograficamente.

Exemplos: Apache Cassandra, Apache HBase, ScyllaDB

Bases de Dados Colunares Analíticas

Armazenam os valores da mesma coluna juntos em disco — diferente das bases de colunas largas. Eficientes para consultas analíticas que leem poucas colunas de grandes conjuntos de dados.

Casos de uso: business intelligence, data warehousing, dashboards, análise de logs.

Exemplos: ClickHouse, DuckDB, Amazon Redshift, Google BigQuery

Bases de Dados em Grafo

Concebidas para dados onde as relações são a parte mais importante. Armazenam nós (entidades) e arestas (relações). Navegação por relações rápida e natural.

Casos de uso: redes sociais, deteção de fraude, sistemas de recomendação, grafos de conhecimento.

Exemplos: Neo4j, Amazon Neptune, ArangoDB

Bases de Dados de Séries Temporais

Especializadas em dados associados ao tempo, otimizadas para ingestão, retenção, compressão e agregação temporal.

Casos de uso: monitorização de servidores, métricas, dados de sensores, dados do mercado bolsista.

Exemplos: InfluxDB, TimescaleDB, OpenTSDB

Bases de Dados em Memória

Armazenam a maioria dos dados em RAM em vez de em disco — extremamente rápidas, embora a memória seja mais cara.

Casos de uso: caching, sessões, contadores em tempo real, leaderboards de jogos.

Exemplos: Redis, Memcached, SAP HANA


Como Escolher o Tipo Certo de Base de Dados?

Questões a colocar:

  • Os dados são altamente estruturados ou flexíveis?
  • Preciso de transações ACID fortes?
  • Vou executar joins complexos?
  • A pesquisa por chave com baixa latência é a principal prioridade?
  • A carga é transacional ou analítica?
  • O sistema vai escalar por muitos servidores?
  • As relações entre entidades são centrais para a aplicação?

Em muitos sistemas reais, as organizações usam mais do que um tipo de base de dados — a chamada persistência poliglota: relacional para dados de negócio, Redis para cache, documental para conteúdo flexível, colunar para análise.

Resumo: Diferenças-Chave Entre Tipos de Bases de Dados

  • Modelo de dados — tabelas, documentos, chave-valor, grafos, registos temporais
  • Flexibilidade do esquema — fixo ou flexível
  • Estilo de consulta — SQL, chave, documentos, grafos, janelas temporais
  • Modelo de consistência — garantias ACID fortes ou compromissos para escalabilidade
  • Perfil de desempenho — transações, análise, relações ou acesso ultra-rápido

Principais Conclusões:

  • Diferentes tipos de bases de dados existem porque diferentes aplicações têm requisitos diferentes.
  • As bases relacionais são ideais para dados estruturados com relações, transações ACID e SQL.
  • As bases chave-valor são excelentes para pesquisas rápidas e caching.
  • As bases documentais são úteis para dados flexíveis ou em mudança.
  • As bases de colunas largas são construídas para cargas distribuídas em grande escala.
  • As bases colunares analíticas otimizam o reporting e a análise em grande escala.
  • As bases em grafo são ideais para dados ricos em relações.
  • As bases de séries temporais especializam-se em métricas e eventos temporais.
  • A persistência poliglota combina vários tipos para diferentes necessidades.

Perguntas Frequentes

Qual é a diferença entre bases de dados relacionais e NoSQL?

As bases relacionais usam esquema fixo, transações ACID e SQL. NoSQL é um termo genérico para modelos chave-valor, documentais, colunas largas e grafo — trocam algumas garantias de consistência por flexibilidade ou escalabilidade horizontal. A escolha certa depende dos seus dados e carga de trabalho.

Quando usar uma base documental em vez de relacional?

Use uma base documental quando os dados têm estrutura aninhada variável e joins entre coleções são raros. Use uma base relacional quando os dados são estruturados, as entidades estão interligadas e precisa de transações fiáveis com consultas multi-tabela complexas.

Uma aplicação pode usar vários tipos de bases de dados?

Sim — isso chama-se persistência poliglota. É comum em produção: PostgreSQL para dados transacionais, Redis para cache, ClickHouse para análise. Cada tipo é usado onde tem melhor desempenho.

Perguntas de Entrevista

Que tipo de base de dados escolheria para um caso de uso específico, e porquê?

Comece pela carga e pelas restrições: estrutura dos dados, requisitos de consistência, padrão de consultas, objetivos de latência e escala. Por exemplo, escolha uma base relacional para transações ACID, uma base documental para registos JSON flexíveis e uma base de séries temporais para métricas com marca temporal.

Quais são os prós e os contras de um tipo de base de dados face a outro?

Cada modelo envolve compromissos. As bases relacionais oferecem forte consistência, joins e um ecossistema SQL maduro, mas alterações de esquema podem ser mais rígidas em grande escala. Os modelos NoSQL costumam oferecer mais flexibilidade ou escalabilidade horizontal, mas podem limitar joins ou exigir mais cuidado no desenho da consistência.

É possível usar diferentes tipos de bases de dados na mesma aplicação?

Sim. Isso é persistência poliglota: usar várias bases, cada uma para a carga que trata melhor. Um padrão comum é PostgreSQL para transações, Redis para cache e ClickHouse (ou outro sistema colunar) para análise.

Lição 1.3: Conceitos de Bases de Dados Relacionais