Armazenamento: SQL, NoSQL, Índices e Sharding
Nesta lição, vamos aprender como escolher onde um aplicativo guarda seus dados. Um banco de dados (o lugar organizado onde o software armazena informações, como um enorme armário de arquivos) é o coração do sistema. Escolhemos ele com base nos access patterns (padrões de acesso — como os dados são r
System Design (planejar como construir um software grande que atende muitas pessoas) é como planejar uma cidade: estradas, armazéns, semáforos e equipes de manutenção, para que a cidade continue funcionando bem mesmo no horário de pico mais intenso.
- Modelagem de armazenamento
- A habilidade central desta lição: escolher onde armazenar dados (um banco de dados) com base em como eles são realmente lidos e escritos (access patterns), na consistência, em índices (um "sumário" que acelera a busca), e no sharding (dividir os dados em várias partes quando ficam grandes demais).
- Trade-off
- Uma escolha consciente que tem tanto um ganho quanto um custo — assim como escolher uma rota: a estrada rápida cobra pedágio, a gratuita demora mais. Em uma entrevista, você explica ao entrevistador ou à entrevistadora o ganho e o custo de cada escolha.
- Métrica operacional
- Um número que mostra se a decisão realmente funciona quando o sistema está no ar e atendendo usuários reais (produção). Por exemplo: latência (quanto tempo uma resposta demora), taxa de erro (a proporção de requisições que falham), atraso de fila (quantas tarefas estão esperando na fila), e taxa de acerto do cache (quantas vezes encontramos uma resposta já pronta). Como os mostradores do painel de um carro — eles indicam se está tudo bem.