Competições Senac RS · Seletiva 26

Tema de casa · 15 e 16/08

Tema de casa — bancos não relacionais no Motriz

Baseo banco Motriz que você fechou na sextaEntregaseg 17/08 até 08:30Tempo2h a 3h
Ocupação: Desenvolvimento de Sistemas Treinador: Diogo Roehrs

Não tem sistema novo aqui: é o mesmo banco que você já tem no repositório.

💡Nota

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:

  1. 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?
  2. 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.
  3. Cola o CREATE TABLE peca do teu schema logo abaixo dos três documentos. Olhando os dois lado a lado: o que o documento resolve? E o que ele perde?
  4. 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:

  1. O que é cache, em três linhas, com as tuas palavras. Não copia definição.
  2. Pesquisa o Redis: qual estrutura de dado dele serve pra guardar o resultado da D01 (carros por etapa, por unidade)? Por quê?
  3. 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.
  4. 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:

  1. Em três frases: por que o CHECK não deu conta dessa regra?
  2. Pesquisa e cita a fonte oficial: o MongoDB tem transação? Desde qual versão? Tem alguma condição pra funcionar?
  3. Se peca e movimentacao_estoque virarem duas coleções separadas no MongoDB, o saldo −11 pode acontecer de novo? Explica o mecanismo, não responde só sim ou não.
  4. 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)
  5. 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:

💡Nota

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.


8. Fontes

Usa estas. Não o primeiro link do Google.

💡Nota

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 é

É 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.

Seletiva 26 · Desenvolvimento de Sistemas · Senac RS