\ud83e\udd14 What Is a Distributed Database?
A distributed database spreads data across multiple servers (nodes) in different locations. The CAP theorem says you can only guarantee two of three properties: Consistency (every read sees the latest write), Availability (every request gets a response), and Partition Tolerance (the system works despite network splits).
Why does this matter? Every major internet service from Google to Netflix relies on distributed databases. Understanding the tradeoffs between consistency and availability is essential for building reliable, scalable systems that serve billions of users.
📖 Aprofundamento
Analogia 1
Imagine um sistema de biblioteca com filiais em 5 cidades, todas compartilhando o mesmo catálogo. Quando alguém retira um livro na Filial A, todas as outras filiais precisam atualizar seus registros. Se a linha telefônica para a Filial C cair (uma partição de rede), a Filial C ainda poderá mostrar o livro como disponível — isso é um problema de consistência. Você pode bloquear todos os empréstimos até que a Filial C se reconecte (escolhendo a consistência) ou deixar que cada filial continue emprestando de forma independente e reconciliar mais tarde (escolhendo a disponibilidade).
Analogia 2
Pense em um bate-papo em grupo com amigos de diferentes países. Quando você envia uma mensagem, todos devem vê-la na mesma ordem. Mas se a Internet de alguém cair, ele perderá mensagens e poderá responder a informações desatualizadas, criando conversas conflitantes. Os bancos de dados distribuídos enfrentam exatamente esse problema em grande escala e usam técnicas como relógios vetoriais e CRDTs para resolver o caos quando todos se reconectam.
🎯 Dicas do simulador
Iniciante
Comece com 5 nós e fator de replicação 3 - isso significa que cada dado é armazenado em 3 dos 5 nós
Intermediário
Compare a consistência de gravação ALL vs ONE – ALL é mais lento, mas garante que cada réplica tenha os dados mais recentes
Especialista
Desative Vector Clocks e acione gravações simultâneas durante uma partição para observar conflitos não resolvidos
📚 Glossário
🏆 Figuras-chave
Eric Brewer (2000)
Formulou o Teorema CAP na UC Berkeley, moldando fundamentalmente o design de banco de dados distribuído ao provar a impossibilidade de garantir simultaneamente consistência, disponibilidade e tolerância a partições
Leslie Lamport (1998)
Criou o algoritmo de consenso Paxos e foi pioneiro na teoria de sistemas distribuídos com conceitos como relógios lógicos, carimbos de data e hora de Lamport e o problema dos generais bizantinos
Diego Ongaro (2014)
Projetei o algoritmo de consenso Raft em Stanford, tornando o consenso distribuído compreensível e prático para sistemas do mundo real como etcd e CockroachDB
Werner Vogels (2007)
Liderei o design do Dynamo da Amazon, que introduziu hashing consistente, relógios vetoriais e quóruns desleixados — inspirando Cassandra, Riak e todo o movimento NoSQL
Jeff Dean & Wilson Hsieh (2012)
Co-projetado pelo Google Spanner, o primeiro banco de dados distribuído globalmente com transações consistentes externamente usando API TrueTime e sincronização GPS/relógio atômico
Marc Shapiro (2011)
Foi pioneiro em tipos de dados replicados livres de conflitos (CRDTs) no INRIA, fornecendo bases matemáticas para consistência eventual livre de coordenação
🎓 Recursos de aprendizagem
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services [paper]
A prova formal do teorema CAP, estabelecendo o resultado de impossibilidade fundamental para sistemas distribuídos (ACM SIGACT News, 2002) - Dynamo: Amazon's Highly Available Key-value Store [paper]
Artigo influente da Amazon sobre armazenamento distribuído eventualmente consistente usando hashing consistente, relógios vetoriais e quorum desleixado (SOSP 2007) - Spanner: Google's Globally Distributed Database [paper]
Banco de dados globalmente consistente baseado em TrueTime do Google, alcançando consistência externa por meio de GPS e sincronização de relógio atômico (OSDI 2012) - In Search of an Understandable Consensus Algorithm (Raft) [paper]
O algoritmo de consenso Raft projetado para facilitar a compreensão, agora usado em etcd, CockroachDB e TiKV (USENIX ATC 2014) - Designing Data-Intensive Applications [article]
Guia abrangente de Martin Kleppmann para fundamentos de sistemas distribuídos, replicação, particionamento e modelos de consistência - Jepsen.io [article]
Testes e análises rigorosos de Kyle Kingsbury sobre declarações de correção de bancos de dados distribuídos sob condições reais de falha - The Raft Consensus Algorithm Visualization [article]
Visualização interativa do algoritmo de consenso Raft com eleição passo a passo do líder e replicação de log