🗄️ Bancos de dados
Guardar dados é fácil — um arquivo faz isso. O difícil é garantir que, com mil operações simultâneas e a energia podendo cair a qualquer instante, os dados nunca fiquem num estado impossível; e ainda responder perguntas sobre bilhões de linhas em milissegundos. Esta trilha vai do modelo relacional e do SQL até as estruturas que fazem tudo isso funcionar por dentro: índices B+tree, transações ACID, MVCC, write-ahead log — e o que acontece com cada uma dessas garantias quando os dados não cabem mais numa máquina só.
O modelo relacional
Tabelas, chaves e integridade referencial. Por que normalizar não é purismo: cada dado repetido é uma chance de o banco se contradizer.
Disponível 12.2SQL: consultando dados
SELECT, WHERE, GROUP BY, HAVING e funções de janela — com a ordem real de execução, que não é a ordem em que você escreve.
Disponível 12.3JOINs
INNER, LEFT, RIGHT, FULL e CROSS. Os três algoritmos que o banco usa por baixo, o problema N+1 e o JOIN que multiplica linhas sem avisar.
Disponível 12.4Índices e B-trees
Como uma B+tree transforma 10 mil leituras em 4. Índices compostos, a regra do prefixo — e por que às vezes o banco ignora o índice e está certo.
Disponível 12.5Transações e ACID
Níveis de isolamento, leitura suja, atualização perdida, MVCC e o write-ahead log que garante que uma queda de energia nunca deixe metade de uma transferência.
Disponível 12.6Escala e NoSQL
Replicação, sharding, o teorema CAP sem folclore e as famílias NoSQL. O que exatamente se perde ao distribuir — e por que a resposta certa costuma ser 'ainda não'.
Disponível