Palavras-chave, identificadores, números, texto entre aspas e pontuação. Erro claro para aspas desbalanceadas.
Árvore sintática para CREATE TABLE, INSERT e SELECT *. O WHERE é reconhecido.
Na página 1, relido ao abrir o arquivo. Tabela inexistente é recusada antes de tocar nos dados.
$ ./minidb dados.db < consultas.sql CREATE TABLE aluno (id INT, matricula INT); -- OK INSERT INTO aluno VALUES (1, 20260001); -- OK 1 SELECT * FROM aluno; -- 1|20260001 (1 linha)
E as mesmas linhas voltam quando outro processo abre o arquivo.
| O que entra | M1 a M4: página, cache, árvore B+, parser e catálogo | |
| Prazo | Hoje, 03/11, às 23h59, por pull request | |
| Junto | NOTES.md de cada módulo e o histórico de commits | |
| Peso | Testes de aceitação, qualidade do código e do histórico, NOTES.md | 30 |
Na quinta publico a solução mínima viável. Depois disso, o M1–M4 não vale mais pontos.
minidb ou da referência| # | Tópico | O que o minidb passa a fazer |
|---|---|---|
| 1 | Executor e filtro | WHERE com modelo iterador, varredura sequencial e por índice |
| 2 | Transações | BEGIN, COMMIT e ROLLBACK com log de valor antes e depois |
| 3 | Recuperação | Log de escrita antecipada; volta consistente depois de um kill -9 |
| 4 | Remoção e atualização | DELETE e UPDATE, com fusão e redistribuição na árvore B+ |
| 5 | Junções | JOIN por laço aninhado e por hash |
| 6 | Ordenação e agregação | ORDER BY com ordenação externa; COUNT, SUM, GROUP BY |
| 7 | Tamanho variável | VARCHAR e nulos em página com diretório de slots |
| 8 | Concorrência | Várias sessões, bloqueio em duas fases e detecção de deadlock |
| 9 | Otimizador por custo | ANALYZE, estimativa de cardinalidade e EXPLAIN |
| 10 | LSM-tree | Motor alternativo: memtable, SSTables e compactação |
No máximo duas duplas por tópico, por ordem de escolha na quinta.
| Implementação | Testes da dupla para o tópico, código, histórico de commits e NOTES.md | 40 |
| Conceito | Apresentação do tópico, ligada ao código que vocês escreveram | 15 |
| Perguntas | Cada integrante responde sozinho sobre um trecho do código | 15 |
A pergunta que toda apresentação responde: o que precisou mudar no minidb para ter isso?
Doze minutos de apresentação, com demonstração ao vivo, e cinco de perguntas. Quem lê o material recebe zero.
O resto da aula é laboratório. Até 23h59, o pull request