Aula 07: NoSQL e Cache ⚡
🎯 Nossa Missão
- Entender quando o SQL não é suficiente.
- Conhecer o modelo de Documentos (MongoDB).
- Dominar o conceito de Cache (Redis).
- Escalabilidade Horizontal: Pensando grande.
🦖 O limite do Relacional
Bancos SQL são incríveis, mas: * Esquema rígido (alterar tabela é lento). * Dificuldade em escalar para bilhões de linhas. * Lentidão em requisições repetitivas. * O NoSQL resolve esses gargalos.
🧠 O que é NoSQL?
- Not Only SQL.
- Não usa obrigatoriamente tabelas e colunas.
- Foco em performance e flexibilidade.
- Padrão para Big Data e Redes Sociais.
📂 Tipos de NoSQL
- Documentos: MongoDB (tipo JSON).
- Chave-Valor: Redis (ultra rápido).
- Grafos: Neo4j (relacionamentos complexos).
- Colunares: Cassandra (dados massivos).
🍃 MongoDB: O Rei dos Documentos
Em vez de Linhas, usamos Documentos. Em vez de Tabelas, usamos Collections.
📐 Por que usar Documentos?
- Flexibilidade: Um documento pode ser diferente do outro.
- Agilidade: Ótimo para MVPs e dados desestruturados.
- Hierarquia: Você pode anular objetos dentro de objetos.
⚡ Redis: Velocidade Extrema
- In-Memory: Os dados ficam na RAM, não no HD.
- Latência: Respostas em milissegundos.
- Estrutura: Chave-Valor simples.
🧊 O Conceito de Cache
mermaid graph TD User[Usuário] --> App[Aplicação] App -- 1. Tem no Cache? --> Redis{Redis} Redis -- Sim --> User Redis -- Não --> DB[(Banco Postgres)] DB --> App App -- 2. Salva no Cache --> Redis
🕑 Expiração de Dados (TTL)
No cache, os dados não vivem para sempre. * SET token "abc" EX 3600 (Valido por 1 hora). * Evita que o cache fique lotado de lixo antigo. * Ideal para sessões de login e tokens.
🪜 Escalabilidade: Vertical vs Horizontal
mermaid graph TD V[Vertical: Aumentar o Servidor] H[Horizontal: Adicionar + Servidores] V --- Cost[Custo Exponencial] H --- Scale[Escala Infinita] * NoSQL é mestre na escalabilidade Horizontal.
🌐 Onde usar cada um?
- E-commerce (Carrinho): Redis.
- Rede Social (Posts/Feeds): MongoDB.
- Financeiro (Transações): Postgres (SQL).
- Logs: ElasticSearch.
🔄 Consistência Eventual
O "problema" do NoSQL. * Em sistemas gigantes, pode levar milissegundos para o dado sincronizar em todos os servidores. * Exemplo: O número de likes de uma foto pode variar um pouco entre usuários por instantes.
🪟 Ferramentas Visuais
- MongoDB Compass: Explorar documentos visualmente.
- Beekeeper Studio: Client moderno para NoSQL e SQL.
- Redis Insight: Monitorar o uso de memória.
🚀 Performance na Prática
Imagine buscar o perfil de um usuário famoso: * No SQL: 50ms (muitos joins). * No NoSQL: 10ms (objeto pronto). * No Cache: 1ms (direto da RAM).
📦 Modelagem no MongoDB
"Embed" (Embutir) vs "Link" (Referenciar). * Se os dados mudam pouco, salve dentro do documento. * Se os dados são gigantes, use a ID (referência).
🛡️ Quando NÃO usar NoSQL?
- Quando a integridade dos dados e relações complexas são críticas.
- Sistemas contábeis e ERPs tradicionais.
- Quando você não tem volume de dados que justifique a troca.
📈 O Futuro: Multi-Model
Bancos modernos (como Postgres) já suportam campos JSON. * A linha entre SQL e NoSQL está ficando cada vez mais tênue!
🏆 Checklist NoSQL Pro
- Entende o formato JSON/Documento.
- Sabe explicar para que serve o Cache.
- Reconhece que Redis vive na Memória RAM.
- Diferencia escala vertical de horizontal.
📝 Prática de Hoje
- Criar um documento JSON de perfil.
- Instalar o MongoDB localmente.
- Simular um cenário de cache para uma notícia famosa.
🏁 Dúvidas?
Otimize seu app para milhões de usuários! 🚀⚡