Trilha 12

🗄️ 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ó.

12.1

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

SQL: 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.3

JOINs

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

Transaçõ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.6

Escala 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
Pré-requisito útil: a lição Árvores balanceadas, da trilha 04, explica rotações e B-trees do zero — é a estrutura por trás de todo índice de banco de dados. E Hash tables por dentro ajuda a entender o hash join e o sharding por hash.