Sharding de banco de dados: horizontal
O sharding horizontal divide as linhas de uma tabela entre vários bancos com o mesmo schema. O curso compara shards e réplicas e mostra os dois problemas que o sharding resolve: vazão de escrita e volume de dados. Ele trata da escolha da chave de shard a partir dos padrões de acesso, da declaração com connects_to e da escolha do shard em execução com connected_to ou com o middleware de shard. Depois mostra do que se abre mão: joins, transações, unicidade global e agregações baratas. No fim, traz os números que mantêm esta aplicação sem sharding e o desafio group_by_shard.
O que você vai aprender
- ✓Como um shard se diferencia de uma réplica e o que cada um resolve
- ✓Como escolher uma chave de shard equilibrando distribuição uniforme e alinhamento com as queries
- ✓Como declarar shards no Active Record com connects_to shards:
- ✓Como escolher um shard por bloco ou por requisição, incluindo a trava de troca de shard
- ✓Do que o sharding tira: joins, transações, unicidade global e agregações baratas
- ✓As alternativas a tentar antes do sharding, em ordem
Dividindo linhas entre bancos
O sharding horizontal divide as linhas de uma tabela entre vários bancos, cada um guardando um subconjunto diferente. Todo shard tem o mesmo schema, e nenhum deles tem todos os dados.
Ler a aula completa grátis →Currículo
7 aulasDividindo linhas entre bancos
Compara shards e réplicas, aponta os dois problemas que o sharding resolve e mostra o suporte nativo do Rails.
A chave de shard decide tudo
Mostra por que a chave de shard vem dos padrões de acesso e por que user_id serve melhor que course_id aqui.
connects_to shards
Mostra como connects_to shards: liga nomes de shard aos papéis writing e reading e por que recusa database:.
Escolhendo um shard em execução
Trata do connected_to com papel e shard, do middleware com resolvedor próprio e da trava de troca de shard.
Do que você abre mão
Descreve as quatro garantias perdidas entre shards: joins, transações, restrições de unicidade e agregações baratas.
Por que esta aplicação não fragmentaria
Usa números medidos para mostrar por que esta aplicação de 43 MB não deve ter sharding e o que tentar antes.
Juntando tudo
Revisa o curso em cinco pontos e propõe o desafio group_by_shard, que agrupa ids para fazer uma query por shard.