Saindo do Zero · Módulo 06

Banco de dados — onde a informação realmente mora

A diferença entre uma variável que some e um dado que sobrevive a um reinício do servidor.
  • O que é um banco de dados, no fundo
  • SQL x NoSQL
  • Cache
  • ORM
00 — O QUE É UM BANCO DE DADOS, NO FUNDO

Informação organizada que sobrevive ao desligar do servidor

Lá no Módulo 1 vimos que uma variável guarda informação enquanto o programa está rodando — mas se o servidor reiniciar, tudo que estava só na variável desaparece. Um banco de dados resolve exatamente isso: é um sistema separado, especializado em guardar informação de forma permanente e organizada, pra que ela continue existindo mesmo depois de um reinício, uma atualização, ou uma queda de energia.

Metáfora: uma variável é como uma anotação na palma da mão — some quando você lava a mão. Um banco de dados é o caderno guardado na gaveta: continua lá, exatamente como você deixou, mesmo depois de você sair da sala e voltar dias depois.
01 — SQL X NOSQL

Duas formas diferentes de organizar a mesma informação

Bancos SQL (relacionais) guardam dados em tabelas, com colunas fixas e bem definidas pra cada tipo de informação — todo "aluno" tem exatamente os mesmos campos, e tabelas diferentes se relacionam entre si (um aluno matriculado num curso, por exemplo). Bancos NoSQL são mais flexíveis: cada registro pode ter um formato próprio, o que ajuda quando os dados mudam de forma com frequência ou não seguem uma estrutura rígida e relacional.

SQL — tabelanomecursonotaNoSQL — documento{nome: "Ana",cursos: [...]extra: {...}}
Metáfora: SQL é como uma planilha — cada linha tem exatamente as mesmas colunas preenchidas. NoSQL é como uma pasta de fichas avulsas — cada ficha pode ter campos um pouco diferentes, dependendo do que aquele registro específico precisa guardar.
No seu projetoO Enf Pró Cards e o SongPlay usam bancos SQL (relacionais) — os dados de aluno, flashcard e progresso se encaixam bem no formato de tabelas relacionadas entre si.
reconhecer 1 — SQL x NoSQLpendente

Qual situação favorece mais um banco SQL (relacional), com tabelas e colunas fixas?

ADados bem estruturados e relacionados entre si, como alunos matriculados em cursos
BDados que mudam de formato a cada registro, sem nenhuma relação fixa entre eles
CQualquer tipo de dado, não existe diferença prática entre os dois
02 — CACHE

Um atalho pra não repetir o mesmo trabalho pesado de novo

Buscar informação direto no banco de dados tem um custo — mesmo que pequeno, ele se acumula quando a mesma pergunta é feita repetidas vezes por muitos usuários. Cache é guardar uma cópia rápida de um resultado que já foi calculado ou buscado antes, num lugar de acesso mais veloz, evitando repetir esse mesmo trabalho toda vez que a mesma informação for pedida de novo.

pedidocaminho longoatalho: cachecachebanco
Metáfora: é como decorar de cabeça o telefone de alguém que você liga toda semana, em vez de procurar na agenda inteira sempre que precisar ligar. A informação é a mesma — só o caminho até ela fica bem mais curto.
No dia a diaUm app de notícias que já mostrou a manchete pra você não precisa buscar ela de novo no servidor toda vez que você reabre o app — ele guarda uma cópia recente localmente por um tempo.
Por que isso importaCache é ótimo pra dados que não mudam a cada segundo (como uma lista de módulos de um curso) e péssimo pra dados que precisam estar sempre atualizados na hora (como o saldo de uma conta bancária).
reconhecer 2 — cachependente

Qual é a ideia central por trás de usar cache?

AApagar dados antigos do banco pra liberar espaço
BGuardar uma cópia rápida de um resultado já calculado, evitando repetir o mesmo trabalho pesado de novo
CCriptografar os dados antes de guardar no banco
03 — ORM

A camada que traduz um objeto do código pra um comando de banco

Um ORM(mapeamento objeto-relacional) é uma camada que fica entre o código e o banco de dados, traduzindo automaticamente: quando o código diz "salve este objeto Aluno", o ORM monta e executa o comando SQL correspondente por trás das cenas, sem que o programador precise escrever esse comando manualmente. Isso deixa o código mais legível e menos sujeito a erro de digitação num comando de banco.

aluno.salvar()(objeto no código)ORMINSERT INTOalunos (...)
Metáfora: o ORM é como um tradutor simultâneo numa reunião internacional: você fala na sua língua ("salvar este aluno"), e ele converte automaticamente pro idioma que o banco de dados entende, sem que você precise aprender esse idioma pra se comunicar.
No seu projetoO Enf Pró Cards usa o Drizzle, e o SongPlay usa o Prisma — os dois são ORMs: em vez de escrever SQL na mão toda vez, o código trabalha com objetos (como "aluno" ou "flashcard"), e o ORM cuida da tradução pro banco.
reconhecer 3 — ORMpendente

Qual é a função de um ORM?

ATraduzir automaticamente comandos do código (como "salvar objeto") em comandos de banco de dados, sem exigir SQL escrito à mão
BGuardar uma cópia rápida dos dados mais acessados
CDecidir se o banco deve ser SQL ou NoSQL

04 — desafio final do módulo 6:Um sistema de estudos precisa guardar, de forma permanente, os alunos e os cursos em que estão matriculados (dados bem relacionados entre si), evitar buscar no banco a mesma lista de módulos toda vez que a home carrega, e permitir que o código trabalhe com um objeto "Aluno" sem escrever SQL manualmente. Quais conceitos deste módulo resolvem cada uma dessas necessidades?

desafio finalpendente

Escolha a alternativa que associa corretamente cada necessidade ao conceito certo.

ABanco SQL (dados relacionados) + cache (evitar repetir a busca da lista de módulos) + ORM (trabalhar com objetos sem SQL manual)
BNoSQL pra tudo, porque é sempre mais rápido que SQL
CCache resolve o relacionamento entre aluno e curso, e o ORM serve só pra guardar senhas