Migrations: chaves compostas
O curso trata de chaves primárias compostas no Rails e no Postgres, tomando o esquema desta aplicação como exemplo. Ele compara um id substituto com índice único a uma chave formada por duas colunas. Depois mostra os casos que obrigam a usar uma chave composta: tabelas particionadas, dados com sharding ou vários inquilinos e esquemas legados. Também explica o suporte do Rails 7.1, incluindo query_constraints, e uma sequência de cinco deploys para trocar uma chave existente. Por fim, mostra o papel da ordem das colunas e do prefixo mais à esquerda nos índices.
O que você vai aprender
- ✓Custos e benefícios de um id substituto ao lado de um índice único sobre o par
- ✓Quando particionamento, sharding ou um esquema legado exigem chave composta
- ✓Como declarar chaves compostas no Rails 7.1 e usar query_constraints
- ✓Uma sequência de cinco deploys para trocar uma chave primária existente
- ✓Ordem das colunas, prefixo mais à esquerda e índices de cobertura
- ✓Como ler as decisões por trás de um esquema existente
A chave que são duas colunas
Uma chave primária composta é uma chave primária feita de mais de uma coluna. O Rails usa um id autoincremental como padrão há tanto tempo que a alternativa parece exótica. Mas, em algumas tabelas, a identidade de uma linha é mesmo um par de valores, e fingir o contrário tem um custo.
Ler a aula completa grátis →Currículo
7 aulasA chave que são duas colunas
Compara o id substituto com a chave composta nas dez tabelas de junção da aplicação e mostra os custos.
Quando a chave precisa ser composta
Mostra por que tabelas particionadas, dados com sharding e esquemas legados exigem chave composta, e a unicidade sozinha não.
Como o Rails as suporta
Mostra como o Rails 7.1 declara chaves compostas, como funciona query_constraints e onde um id em array causa problemas.
Migrando para uma com segurança
Descreve cinco deploys para trocar uma chave primária e trata das filas, caches e chaves estrangeiras que guardam ids antigos.
O índice que você já tem
Explica a regra do prefixo mais à esquerda, a ordem das colunas num índice e os índices de cobertura.
O que este esquema escolheu
Analisa as escolhas deste esquema: tabelas de junção consistentes, um índice redundante em user_id e slugs únicos no catálogo.
Juntando tudo
Revisa o curso e propõe um desafio: implementar index_serves?, que aplica a regra do prefixo mais à esquerda.