CW 3

🔹 O que é migração?

Migrar significa transferir dados de um sistema para outro.

No nosso caso, é sair de um banco relacional (SQL) para um banco não relacional (NoSQL, como o MongoDB).


🏛 Banco Relacional (SQL)

Organiza dados em tabelas, com linhas e colunas.

Exige um esquema fixo (ex: CPF sempre precisa estar presente).

Usa normalização, ou seja, dividir informações em várias tabelas para evitar redundância.


📌 Exemplo SQL:

Tabela Alunos

id | nome

1 | Maria

2 | João


Tabela Cursos

id | nome

10 | Engenharia

11 | Design


Tabela Matrícula

aluno_id | curso_id

1 | 10

2 | 10

👉 Para saber em quais cursos Maria está, precisamos juntar as tabelas (JOIN).


🌐 Banco Não Relacional (NoSQL – MongoDB)

Armazena dados em documentos JSON (mais flexível).

Não precisa de esquema fixo: cada documento pode ter campos diferentes.

Trabalha com denormalização, ou seja, guardar dados relacionados juntos para evitar muitas consultas.


📌 Exemplo MongoDB:

{

"nome": "Maria",

"cursos": ["Engenharia", "Design"]

}

👉 Aqui, os dados já estão todos no mesmo documento.


🔀 Diferenças principais

SQL: organizado, rígido, depende de JOINs para relacionar.

NoSQL: flexível, rápido para consultas, mas pode gerar redundância (mesmos dados em mais de um lugar).


🚀 Por que migrar para NoSQL?

Flexibilidade: permite guardar dados variados sem alterar o esquema.

Escalabilidade: lida melhor com grandes volumes de dados distribuídos.

Agilidade: consultas mais rápidas em alguns cenários (quando os dados já estão juntos).


Desafios da migração

1. Mapear tabelas relacionais para coleções/documentos.

Ex: as tabelas "Aluno", "Curso" e "Matrícula" podem virar um único documento com array de cursos.


2. Manter consistência dos dados.

Como não há regras rígidas como no SQL, é preciso pensar em validações no sistema.


3. Escolher entre normalizar ou denormalizar.

Normalizar → menos redundância, mas mais consultas.

Denormalizar → dados juntos, mas pode repetir informações.


Resumo Final:

Migrar de SQL para NoSQL significa trocar tabelas rígidas por documentos flexíveis.

O grande desafio é planejar a modelagem dos dados, decidindo quando usar documentos incorporados (denormalização) e quando manter referências.