4.1. Armazenamento 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.
Resumo
- Índice: estrutura extra derivada dos dados. Acelera leituras, mas toda escrita precisa atualizá-lo.
- LSM-tree: escreve na memtable, descarrega em SSTables ordenadas e imutáveis, compacta em segundo plano. Bloom filter evita leituras inúteis.
- B-tree: páginas fixas (ex.: 4 KB) em árvore, atualizadas no lugar; WAL garante recuperação após crash.
- LSM: mais vazão de escrita, menos espaço. B-tree: leitura mais previsível. Ambos têm amplificação de escrita.
- Índice secundário, clustered (linha dentro do índice), covering; tudo em memória: Redis, VoltDB.
Perguntas-chave
responda de cabeça, depois abraPor que LSM-trees escrevem rápido?
Toda escrita vira gravação sequencial (log e SSTables), sem buscar e reescrever páginas espalhadas no disco.
Para que serve o write-ahead log numa B-tree?
Registra cada mudança antes de alterar as páginas; após um crash, o log restaura a árvore a um estado consistente.
O que é amplificação de escrita?
Uma escrita lógica gera várias escritas físicas (WAL, página, compactação); limita a vazão e desgasta SSDs.
Exercícios de fixação
0/5 respondidas1.
Um sistema de telemetria recebe 500 mil escritas por segundo e lê pouco. Qual motor tende a ser melhor?
2.
Numa LSM-tree, o Bloom filter serve para:
3.
O servidor cai no meio de uma divisão de página da B-tree. O que permite recuperar a árvore?
4.
Criar cinco índices secundários numa tabela de pedidos tem qual efeito?
5.
Um índice que guarda algumas colunas além da chave, respondendo a consulta sem ir à tabela, é um índice: