Designing Data-Intensive Applications
System design de aplicações com uso intenso de dados (2ª edição) · Martin Kleppmann e Chris Riccomini
0/31tópicos concluídos
0/3provas aprovadas
0%progresso total
Como estudar
- Olhe a ilustração. Leia o resumo (máx. 5 linhas).
- Tente responder as perguntas-chave antes de abrir.
- Faça os 5 exercícios. Acertar 3 ou mais conclui o tópico.
- No fim, faça as provas (mínimo 70%).
- Tudo concluído: emita o certificado.
- 1.1Sistemas operacionais, analíticos e dados derivados
OLTP atende o usuário; OLAP responde ao analista; dado derivado é cópia recalculável do sistema de registro.novo - 1.2Nuvem, sistemas distribuídos e sociedade
Cloud ou self-hosting, um nó ou vários: cada escolha troca custo, controle e complexidade.novo - 2.1Requisitos não funcionais e desempenho
Meça latência por percentis, não por média: p99 é a experiência dos seus clientes mais valiosos.novo - 2.2Confiabilidade, escalabilidade e manutenibilidade
Tolere falhas, descreva a carga antes de escalar e projete para quem vai operar e mudar o sistema.novo - 3.1Modelo relacional × modelo de documentos
Documento brilha em dados em árvore lidos juntos; relacional brilha em joins e relações muitos-para-muitos.novo - 3.2Grafos, event sourcing e DataFrames
Grafos para relações livres; eventos imutáveis como fonte; DataFrames e arrays para análise e ML.novo - 4.1Armazenamento para OLTP: LSM-trees e B-trees
LSM escreve em sequência e compacta depois; B-tree atualiza páginas no lugar. Índice acelera leitura e custa escrita.novo - 4.2Armazenamento analítico e warehouses na nuvem
Guardar por coluna permite comprimir e varrer só o necessário; vetorização usa a CPU ao máximo.novo - 4.3Busca de texto completo e embeddings vetoriais
Índice invertido acha palavras; embedding acha significado. Busca vetorial é a base de RAG e recomendação.novo - 5.1Formatos de codificação e evolução de esquema
Codifique para que código novo leia dado velho e código velho leia dado novo.novo - 5.2Modos de fluxo de dados: banco, serviços, workflows e eventos
Dados fluem por bancos, chamadas de serviço, workflows duráveis e mensagens; cada caminho tem seu problema de compatibilidade.novo
- 6.1Replicação com líder único
Um líder recebe as escritas e envia o log aos seguidores; síncrono garante cópia, assíncrono garante disponibilidade.novo - 6.2Problemas do atraso de replicação
Ler de réplica atrasada mostra o passado: garanta ler as próprias escritas, leituras monotônicas e prefixo consistente.novo - 6.3Replicação multi-líder e sem líder
Vários pontos de escrita trazem conflitos; quóruns w + r > n leem pelo menos uma cópia nova.novo - 7.1Sharding: chaves, faixas e hashes
Divida os dados em shards para escalar; escolha a chave para espalhar carga e evitar hot spots.novo - 7.2Rebalanceamento, roteamento e índices secundários
Mova dados com o mínimo de impacto, saiba qual nó tem cada chave e escolha índice local ou global.novo - 8.1Transações, ACID e isolamento fraco
ACID simplifica erros e concorrência; read committed e snapshot isolation evitam muitos, mas não todos, os bugs.novo - 8.2Lost update, write skew e serializabilidade
Ler-modificar-escrever concorrente perde dados; só serializabilidade elimina write skew e fantasmas.novo - 8.3Transações distribuídas e exactly-once
Two-phase commit dá atomicidade entre nós, ao custo de bloquear se o coordenador sumir.novo - 9.1Falhas parciais, redes e relógios não confiáveis
Sem resposta não diz se o outro morreu; relógios mentem. Projete supondo os dois.novo - 9.2Pausas, maioria, leases e fencing
Um nó pode pausar sem saber; a verdade é decidida pela maioria, e tokens de fencing barram o líder zumbi.novo - 10.1Linearizabilidade
Linearizável = parece haver uma única cópia e cada operação acontece num instante. Custa disponibilidade e latência.novo - 10.2IDs, relógios lógicos, consenso e coordenação
Relógios lógicos ordenam por causalidade; consenso decide um valor entre nós mesmo com falhas.novo
- 11.1Batch: Unix, object stores e MapReduce
Batch lê uma entrada imutável e grande, gera uma saída nova; rodar de novo é seguro.novo - 11.2Dataflow engines, joins e usos do batch (ETL e ML)
Spark e Flink substituem MapReduce com DAGs em memória; batch alimenta warehouses, modelos de ML e serviços.novo - 12.1Streams, mensageria e logs
Broker tradicional apaga ao entregar; broker baseado em log guarda em ordem e permite reler.novo - 12.2Change data capture e event sourcing
CDC transforma as escritas do banco num stream; o log vira a fonte, e o estado é sua integral.novo - 12.3Tempo, joins e tolerância a falhas em streams
Use o tempo do evento, não o de processamento; janelas, joins e checkpoints dão resultado correto mesmo com falhas.novo - 13.1Integração de dados e desagregação do banco
Nenhum sistema faz tudo: combine ferramentas ligando-as por logs de eventos e dados derivados.novo - 13.2Corretude: end-to-end, restrições e verificação
Garantias de cada camada não bastam; IDs de requisição de ponta a ponta e auditoria contínua garantem integridade.novo - 14Fazer a coisa certa: ética em sistemas de dados e IA
Modelos preditivos e coleta de dados afetam pessoas: projete com responsabilidade, privacidade e consentimento.novo