🏛️ Bancos Relacionais
Os bancos relacionais organizam dados em tabelas com schema rigido, usam SQL como linguagem padrao e garantem propriedades ACID. Sao a base da maioria das aplicacoes corporativas e o modelo mais maduro do mercado.
🎯 Principais SGBDs Relacionais
PostgreSQL
O mais completo open-source. Extensoes (PostGIS, pgvector), tipos avancados, JSON nativo. Ideal para quem quer flexibilidade sem abrir mao de SQL.
MySQL
Popular, simples de operar, ecossistema enorme. Primeira escolha para apps web, CMSs e stacks LAMP. Performance excelente para leitura.
SQL Server
Integracao nativa com ecossistema Microsoft (.NET, Azure, Power BI). Forte em ambientes corporativos Windows.
Oracle
Enterprise. RAC, Data Guard, particionamento avancado. Custo alto, mas recursos de missao critica incomparaveis.
SQLite
Banco embarcado, zero configuracao, arquivo unico. Perfeito para apps mobile, IoT, prototipagem e testes. Nao precisa de servidor.
✅ USAR QUANDO
- • Dados altamente estruturados com relacoes claras
- • Integridade referencial e consistencia sao prioridade
- • Workloads OLTP (muitas transacoes curtas e concorrentes)
- • Queries complexas com JOINs, agregacoes e subqueries
❌ NAO USAR QUANDO
- • Schema muda constantemente e de forma imprevisivel
- • Escala horizontal massiva (milhares de nos) e requisito
- • Dados sao predominantemente nao-estruturados (logs, JSON variado)
- • Latencia sub-milissegundo e critica (cache, sessoes)
📄 Bancos de Documentos
Bancos de documentos armazenam dados como JSON/BSON, sem schema rigido. Cada documento pode ter estrutura diferente, o que traz flexibilidade para cenarios onde os dados evoluem rapidamente ou variam entre registros.
🎯 Principais SGBDs de Documentos
MongoDB
O mais popular. Schema flexivel, aggregation pipeline poderoso, sharding nativo. Ecossistema rico com Atlas (cloud), Compass (GUI) e drivers para todas as linguagens.
Couchbase
Combina documento + cache em memoria. N1QL (SQL-like query), replicacao multi-datacenter. Forte em cenarios que precisam de baixa latencia com documentos complexos.
🔍 Documento vs Relacional: Quando Escolher
Escolha Documento quando...
- • Dados tem estrutura variavel (catalogo de produtos com atributos diferentes)
- • Prototipagem rapida sem migrations
- • Dados sao naturalmente hierarquicos (posts com comentarios aninhados)
- • Escala horizontal e prioridade
Escolha Relacional quando...
- • Relacoes entre entidades sao complexas e frequentes
- • Consistencia transacional e obrigatoria
- • Dados tem schema estavel e bem definido
- • Queries com muitos JOINs sao a norma
⚡ Chave-Valor e Cache
Bancos chave-valor sao os mais simples conceitualmente: uma chave mapeia para um valor. Essa simplicidade permite latencia sub-milissegundo e throughput massivo. Sao a base de sistemas de cache, sessoes e filas em tempo real.
🎯 Principais SGBDs Chave-Valor
Redis
In-memory, latencia sub-milissegundo. Estruturas de dados ricas (strings, hashes, listas, sets, sorted sets). Pub/Sub, Streams, Lua scripting. O canivete suico do cache.
DynamoDB
Serverless da AWS, auto-scaling, SLA de single-digit ms. Modelo chave-valor + documento. Pay-per-request ou capacidade provisionada. Zero ops.
📊 Casos de Uso
- • Cache de aplicacao: respostas de API, resultados de queries pesadas, paginas renderizadas
- • Sessoes de usuario: armazenamento rapido e expiravel de dados de sessao
- • Filas e mensageria: Redis Lists e Streams para processamento assincrono
- • Contadores em tempo real: page views, rate limiting, leaderboards
- • Pub/Sub: notificacoes em tempo real, chat, eventos
💡 Padroes de Cache
- Cache-Aside (Lazy Loading): App verifica o cache primeiro. Se nao encontra (miss), busca no banco, grava no cache e retorna. Simples e eficiente.
- Write-Through: Toda escrita vai para o cache E para o banco ao mesmo tempo. Cache sempre atualizado, mas escrita mais lenta.
- Write-Behind: Escrita vai para o cache imediatamente. O banco e atualizado de forma assincrona. Risco de perda se o cache cair antes do sync.
- TTL (Time-To-Live): Defina expiracao para evitar dados stale. Padrao: 5-15 min para dados de leitura, 30-60s para dados volateis.
📊 Bancos Colunares
Bancos colunares armazenam dados por coluna em vez de por linha. Isso permite compressao extrema e scans muito rapidos para queries analiticas que acessam poucas colunas em tabelas com bilhoes de linhas. Sao a base de Data Warehouses modernos.
🎯 Principais SGBDs Colunares
BigQuery
Serverless do Google. Escala automatica, SQL padrao, integracao com GCP. Paga por query executada. Ideal para analytics ad-hoc.
Redshift
Data warehouse da AWS. Cluster gerenciado, Redshift Spectrum para S3, integracao com ecossistema AWS.
ClickHouse
Open-source, criado pela Yandex. Performance absurda para OLAP, compressao agressiva. Forte em logs, metricas e analytics em tempo real.
Snowflake
Multi-cloud, separacao de storage e compute. Escala independente, compartilhamento de dados entre organizacoes. UX excelente.
📊 Dado Importante
Bancos colunares podem ser 100x mais rapidos que row-stores para agregacoes em tabelas largas. Em uma tabela com 50 colunas, se a query usa apenas 3, o colunar le apenas 6% dos dados. A compressao colunar reduz storage em ate 10x porque valores similares ficam juntos.
🕸️ Grafos e Series Temporais
Modelos especializados para dados com relacoes complexas (grafos) ou dados indexados por tempo (series temporais). Cada um resolve problemas especificos de forma muito mais eficiente que um banco relacional generico.
🕸️ Bancos de Grafos
Neo4j
O lider em bancos de grafos. Usa Cypher como linguagem de query, otimizado para travessia de caminhos e pattern matching.
- • Redes sociais: amigos de amigos, sugestoes de conexao, graus de separacao
- • Recomendacoes: "quem comprou X tambem comprou Y" com travessia de grafo
- • Deteccao de fraude: identificar padroes de conexao suspeitos entre contas
- • Knowledge graphs: relacoes entre entidades, ontologias, busca semantica
⏱️ Series Temporais
InfluxDB
Nativo para series temporais. Flux query language, retencao automatica, downsampling. Forte em metricas de infraestrutura e IoT.
TimescaleDB
Extensao do PostgreSQL. SQL completo + hypertables otimizadas para time-series. Melhor dos dois mundos: SQL familiar + performance temporal.
- • Metricas de sistema: CPU, memoria, disco, rede em dashboards Grafana
- • IoT: sensores, telemetria, dados de dispositivos em alta frequencia
- • Janelas de tempo: medias moveis, agregacoes por intervalo, deteccao de anomalias
- • Financeiro: precos de acoes, ticks, candlesticks com resolucao temporal
⚖️ Como Escolher
Nao existe SGBD perfeito para tudo. A escolha depende do modelo de dados, do padrao de acesso e dos requisitos nao-funcionais. Muitas arquiteturas modernas usam polyglot persistence: cada servico escolhe o banco ideal para seu caso de uso.
📊 Tabela Comparativa
| SGBD | Modelo | Forcas | Atencao |
|---|---|---|---|
| PostgreSQL | Relacional | SQL padrao, extensoes | Tune fino |
| MySQL | Relacional | Popular, simples | Recursos por engine |
| MongoDB | Documento | Flexivel, agregacao | Transacoes multi-col |
| Redis | Chave-valor | In-memory, latencia min | Persistencia/HA |
| ClickHouse | Colunar | Analitico rapido | Apenas OLAP |
| Neo4j | Grafo | Caminhos eficientes | Custo grafos densos |
| Elasticsearch | Busca | Full-text, agregacoes | Nao substitui ACID |
🎯 Recomendacoes por Cenario
- • OLTP (transacional): PostgreSQL - SQL completo, ACID, extensoes, comunidade ativa
- • CMS / Catalogo: MongoDB - schema flexivel para conteudo variado, iteracao rapida
- • Cache / Sessoes: Redis - in-memory, TTL nativo, estruturas de dados ricas
- • Data Warehouse: BigQuery ou ClickHouse - analytics em escala, compressao colunar
- • Grafos / Relacoes: Neo4j - travessia eficiente, Cypher expressivo, visualizacao
- • Series Temporais: TimescaleDB - SQL do PostgreSQL + hypertables otimizadas para tempo
- • Busca Full-text: Elasticsearch - indexacao invertida, scoring, agregacoes, facets