Competições Senac RS · Seletiva 26
Tema de casa · 15 e 16/08
Tema de casa — bancos não relacionais no Motriz
Não tem sistema novo aqui: é o mesmo banco que você já tem no repositório.
Tamanho certo: 2h a 3h no fim de semana inteiro. Isso não é pra virar projeto, é leitura com caneta na mão. O assunto é repertório de defesa: coisa que a banca pode perguntar na apresentação e que você precisa saber responder em uma frase. Se você passou de três horas, entendeu o tamanho errado.
1. Por que isso existe
Você passou a semana inteira provando que o Motriz é relacional: normalizou, fechou integridade referencial, criou índice com justificativa e escreveu transação. Está certo.
Só que na apresentação a banca não pergunta "o que você fez". Pergunta "por que assim". E quem responde "porque banco é assim" perde ponto na hora. Quem sabe onde o outro modelo ganharia é quem consegue defender o próprio.
O plano de curso pede esse comparativo (UC3, elementos da competência). A apostila já te deu a tabela das quatro famílias na seção 1.3 do módulo 03. Lê ela primeiro, leva cinco minutos. Este tema de casa começa onde ela termina.
2. A regra de ouro
Todo exemplo tem que ser do Motriz. Peça, ordem de serviço, movimentação de estoque, unidade, pagamento. Exemplo genérico de blog ("imagine um e-commerce de produtos") conta como trabalho não feito, porque é exatamente o que a internet já tem pronto e não prova que você entendeu nada.
Abre o teu schema.sql do lado. Ele é a metade da resposta em todas as partes.
3. Parte 1 · O catálogo de peças (30 a 40 min)
A situação: pneu tem aro, medida e índice de carga. Óleo tem viscosidade, litragem e classificação API. Embreagem tem código de aplicação por modelo de veículo. Filtro tem código de equivalência. São trinta peças no teu seed e quase nenhum atributo técnico serve pra duas famílias diferentes.
Responde:
- Abre a tua tabela
peca. Como ela guarda hoje esse atributo que muda de peça pra peça? Coluna nula pra caramba, um campo de texto solto, ou simplesmente não guarda? - Escreve o mesmo dado como documento JSON. Três documentos, um pneu, um óleo e uma embreagem, cada um com os atributos que fazem sentido só pra ele.
- Cola o
CREATE TABLE pecado teu schema logo abaixo dos três documentos. Olhando os dois lado a lado: o que o documento resolve? E o que ele perde? - Veredito em uma frase: o catálogo migra pra documento, não migra, ou convive com o relacional?
4. Parte 2 · O painel de pátio (20 a 30 min)
A situação: as consultas D01 a D06 que você escreveu hoje são agregação com
JOIN e GROUP BY. Se o painel da recepção atualiza de dez em dez segundos, é a
mesma agregação rodando o dia inteiro, em cima do mesmo dado, pra devolver quase
sempre o mesmo número.
Responde:
- O que é cache, em três linhas, com as tuas palavras. Não copia definição.
- Pesquisa o Redis: qual estrutura de dado dele serve pra guardar o resultado da D01 (carros por etapa, por unidade)? Por quê?
- A pergunta de verdade, e ela não é técnica: que tempo de vida (TTL) você daria pro cache da D02 (faturamento do mês) e pro da D04 (alerta de estoque)? São números diferentes. Justifica pelo negócio, não pela tecnologia.
- Se o Redis cair no meio do expediente, o que quebra no Motriz?
5. Parte 3 · O −11 do estoque (40 a 50 min) 🎯
Essa é a parte que importa. As outras duas são aquecimento.
Retomando o que aconteceu hoje: a D04b mostrou a peça PC-6001 com saldo −11.
Saiu peça que nunca entrou, e o banco deixou. A RN25 não coube num CHECK
(ERROR 3815, CHECK não faz subquery), a gente não usou trigger, e a resposta
foi transação com SELECT ... FOR UPDATE segurando a linha.
Responde:
- Em três frases: por que o
CHECKnão deu conta dessa regra? - Pesquisa e cita a fonte oficial: o MongoDB tem transação? Desde qual versão? Tem alguma condição pra funcionar?
- Se
pecaemovimentacao_estoquevirarem duas coleções separadas no MongoDB, o saldo −11 pode acontecer de novo? Explica o mecanismo, não responde só sim ou não. - E se tudo virar um documento só de peça, com o histórico de movimentações aninhado dentro dele? Resolve o −11? E o que quebra? (dica: pensa no tamanho desse documento depois de três anos de oficina, e em como você responderia a D05 com ele)
- Veredito em uma frase: a baixa de estoque do Motriz aceita sair do relacional?
6. Parte 4 · Inglês (10 min)
Escreve três ou quatro frases em inglês respondendo:
Why is a relational database the right choice for this workshop management system?
Usa pelo menos quatro destes: structured data, referential integrity, ACID,
joins, aggregation, trade-off, schema.
É o mesmo parágrafo que salva a tua vida se a banca puxar a pergunta em inglês na apresentação. Decora ele.
7. Entrega
Arquivo docs/estudo-nosql.md no teu repositório do Motriz.
- Commit direto na
main. Esse aqui não precisa de PR. - Duas a três páginas. Se passou disso, é enchimento de linguiça.
- Até segunda 17/08, 08:30.
8. Fontes
Usa estas. Não o primeiro link do Google.
- MongoDB Manual — Data Modeling: mongodb.com/docs/manual/data-modeling (oficial e em inglês, então é o módulo 09 acontecendo de graça)
- MongoDB Manual — Transactions: mongodb.com/docs/manual/core/transactions (a fonte da Parte 3, pergunta 2)
- Redis — documentação oficial: redis.io/docs (procura os tipos de dado e o comando
EXPIRE) - SADALAGE, P.; FOWLER, M. NoSQL Distilled. O capítulo de persistência poliglota é exatamente o assunto deste trabalho
- BREWER, E. CAP Twelve Years Later: How the "Rules" Have Changed. IEEE Computer, 2012. Se você for falar de teorema CAP, lê esse antes: metade do que a internet escreve sobre CAP está errado, e o texto é do próprio autor do teorema
- ELMASRI, R.; NAVATHE, S. Sistemas de banco de dados. Já está nas referências do módulo 03, tem capítulo de NoSQL nas edições recentes
Proibido citar página sem autor e sem data. "Localizar e selecionar informações necessárias ao desenvolvimento do seu trabalho" é habilidade avaliada no plano de curso, e escolher fonte ruim é errar essa habilidade.
9. O que este trabalho não é
- ❌ Não é migrar o Motriz pra NoSQL
- ❌ Não é instalar MongoDB nem Redis. Se você quiser subir num container por curiosidade, ótimo, mas é passeio e não conta na entrega
- ❌ Não é decorar sintaxe de
find()nem de comando do Redis - ❌ Não é decorar o teorema CAP
É repertório de decisão: saber o que existe do outro lado, e saber dizer em uma frase por que você não foi pra lá.
10. Segunda de manhã
Vinte minutos de conversa antes de abrir o módulo de API. Leva o arquivo e as respostas na ponta da língua, porque a conversa é de arguição, não de leitura.
E repara na costura: a RN25 não coube no banco. Na segunda começa a API, e é exatamente lá que essa regra vai morar. Este tema de casa é a ponte entre as duas semanas.