Clube do Livro DDIA: Capítulo 7 - Sharding - Parte 1
Details
Dividir os dados entre várias máquinas parece simples até você adicionar uma máquina nova e descobrir que quase todas as chaves mudaram de lugar. A forma de dividir decide quais consultas ficam baratas, onde a carga se acumula e quanto custa crescer.
Vamos abrir o Capítulo 7, 'Sharding', de Designing Data-Intensive Applications (2ª edição), de Martin Kleppmann e Chris Riccomini.
Vamos discutir quando vale dividir um banco em shards, quando é melhor não dividir, e como escolher a forma de dividir os dados para espalhar volume e escritas entre os nós.
Vamos passar pela diferença entre sharding e replicação (e pelos muitos nomes que um shard recebe), pelos prós e contras de shardear e pelo uso de shards para multitenancy, com isolamento de recursos e de falhas, backup por cliente e residência de dados. Depois, as formas de dividir dados chave-valor: key range sharding, com range scans eficientes e o risco de hot spots quando a chave é um timestamp, e hash sharding, do hash mod N que move quase tudo ao número fixo de shards, ao hash range e à variante do Cassandra e do ScyllaDB, até chegar ao consistent hashing.
E, como sempre, trazendo para o dia a dia: quando uma máquina só ainda dá conta (e hoje ela dá conta de muita coisa), como escolher uma partition key sem se arrepender depois, por que usar timestamp como chave joga todas as escritas num shard só e o que pesar antes de dar um shard para cada cliente. Uma conversa aberta, sem aula e sem dono da razão.
✨ Participa da Comunidade!
🌐 Site: https://craftcodeclub.io
💬 Comunidade: https://craftcodeclub.io/join
📅 Próximos eventos: https://craftcodeclub.io/events
📖 O livro PT: https://link.amazon/B0j5WeuXg
📖 O livro EN: https://link.amazon/B0ct3Q7K7
📚 Clube do Livro DDIA: https://craftcodeclub.io/book-clubs/designing-data-intensive-applications
O que você vai ver:
- Sharding vs replicação: cada registro num shard só, mas cada shard replicado em vários nós
- Shard, partition, range, region, vnode, tablet: o mesmo conceito com nomes diferentes, e nada a ver com network partitions
- Prós e contras: escalar volume e escritas, ao custo da partition key, de joins e de transações entre shards
- Sharding para multitenancy: isolamento de recursos, permissões e falhas, cell-based architecture, backup por cliente e residência de dados
- Key range sharding: a enciclopédia da Figura 7-2, range scans e hot spots em chaves próximas
- Pre-splitting, split e merge de shards, e por que dividir um shard custa caro
- Hash mod N: por que adicionar um nó move quase todas as chaves
- Número fixo de shards: 1.000 shards em 10 nós e a dificuldade de escolher esse número
- Hash range sharding e a variante do Cassandra e do ScyllaDB, com limites aleatórios entre os ranges
- Consistent hashing, rendezvous hashing e jump consistent hashing
🎥 Encontros passados que você também vai gostar
- Clube do Livro DDIA: Capítulo 7 - Sharding - Parte 2
- Clube do Livro DDIA: Capítulo 6 - Replicação - Parte 3
- Clube do Livro DDIA: Capítulo 6 - Replicação - Parte 2
- Clube do Livro DDIA: Capítulo 6 - Replicação
- Clube do Livro DDIA: Capítulo 5 - Encoding and Evolution - Parte 2
- Clube do Livro DDIA: Capítulo 5 - Encoding and Evolution
- System Design #09: Consistent Hashing - Scaling Horizontal | ByteByteGo Book Club
- Read Replica: Escalando Acessos ao Banco de Dados
- System Design #10: Design de Key-Value Store Distribuído | ByteByteGo Book Club
- Deep Dive - Relógios Lógicos: de Lamport a Bloom Clocks
#DDIA #DesigningDataIntensiveApplications #Sharding #Particionamento #SistemasDistribuídos #BancoDeDados #CraftCodeClub #ClubeDoLivro #EngenhariaDeSoftware
