Aula 11 - Introdução ao NoSQL e MongoDB 🌐
Objetivo
Objetivo: Entender o que são bancos de dados não relacionais (NoSQL), os motivos para sua existência e as principais diferenças conceituais em relação ao modelo SQL tradicional.
1. O que é NoSQL? 🧩
NoSQL (do inglês Not Only SQL) é um termo que engloba tecnologias de banco de dados que não utilizam o modelo de tabelas relacionais clássico de linhas e colunas.
Por que surgiu?
- Escalabilidade: Lidar com volumes massivos de dados distribuídos em vários servidores.
- Flexibilidade: Armazenar dados com estruturas que mudam frequentemente (esquema flexível).
- Velocidade: Alta performance em operações simples de leitura e escrita.
2. Tipos de Bancos NoSQL 📚
Existem quatro categorias principais:
- Documento: Guarda dados no formato JSON/BSON (Ex: MongoDB, CouchDB).
- Chave-Valor: Como um dicionário gigante (Ex: Redis, DynamoDB).
- Coluna: Otimizado para consultas analíticas pesadas (Ex: Cassandra, HBase).
- Grafo: Focado em conexões e redes (Ex: Neo4j).
3. SQL vs NoSQL: A Grande Batalha ⚔️
| Característica | SQL (PostgreSQL) | NoSQL (MongoDB) |
|---|---|---|
| Estrutura | Rígida (Tabelas) | Flexível (Documentos) |
| Relacionamentos | JOINs poderosos | Documentos aninhados |
| Escalabilidade | Vertical (Melhor Hardware) | Horizontal (Mais Servidores) |
| Transações | ACID nativo e forte | BASE (Eventual) |
4. O Modelo de Documento (JSON) 🏗️
No MongoDB, não temos tabelas, temos Collections. Não temos linhas, temos Documents.
{
"_id": "645a2b3c...",
"nome": "Ricardo Pires",
"idade": 35,
"habilidades": ["SQL", "MongoDB", "Kotlin"],
"endereco": {
"rua": "Av. Brasil",
"cidade": "São Paulo"
}
}
5. Teorema CAP 📊
Em sistemas distribuídos, você só pode escolher dois destes três: * Consistência (Consistency) * Availabilidade (Availability) * Partição (Partition Tolerance)
graph TD
C[Consistência] --- A[Disponibilidade]
A --- P[Partição]
P --- C
style C fill:#f9f,stroke:#333
style A fill:#bbf,stroke:#333
style P fill:#dfd,stroke:#333
6. Prática: Pensando sem Tabelas 💻
Imagine que você quer guardar as postagens de um blog. * No SQL: Tabela Posts, Tabela Comentários, Tabela Autores (3 tabelas + 2 JOINs). * No NoSQL: Um único documento "Post" contendo todos os comentários dentro dele.
7. Exercícios de Fixação 🧠
- O que significa a sigla NoSQL?
- Dê um exemplo de cenário onde o MongoDB seria melhor que o PostgreSQL.
- Explique o conceito de Escalabilidade Horizontal.
Próxima Aula: Vamos colocar a mão na massa instalando o MongoDB e fazendo o primeiro CRUD! 🍃