Pular para conteúdo

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

  1. Documentos: MongoDB (tipo JSON).
  2. Chave-Valor: Redis (ultra rápido).
  3. Grafos: Neo4j (relacionamentos complexos).
  4. Colunares: Cassandra (dados massivos).

🍃 MongoDB: O Rei dos Documentos

Em vez de Linhas, usamos Documentos. Em vez de Tabelas, usamos Collections.

{
  "_id": "abc123",
  "nome": "João",
  "habilidades": ["Git", "Docker"],
  "ativo": true
}


📐 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

  1. Criar um documento JSON de perfil.
  2. Instalar o MongoDB localmente.
  3. Simular um cenário de cache para uma notícia famosa.

🏁 Dúvidas?

Otimize seu app para milhões de usuários! 🚀⚡