Pular para o conteúdo principal

Conceitointermediário

OLAP

Visão Geral

OLAP — processamento analítico em linha — descreve a carga oposta à transacional: poucas consultas, cada uma varrendo grandes volumes, agregando, com tolerância a latência de segundos ou minutos.

Faturamento por região e mês. Comportamento de coorte ao longo de um ano. Ranking de produtos por margem.

Cada uma lê milhões de registros e devolve dezenas de linhas. Nenhuma escreve.

Problema

Carga analítica executada em armazenamento transacional é ineficiente por construção, não por falta de ajuste.

Um banco orientado a linha precisa ler a linha inteira para acessar duas colunas. Um esquema normalizado exige junções que, sobre milhões de registros, dominam o tempo. Índices desenhados para seletividade não ajudam quem varre tudo.

E, além da ineficiência, há a competição: a consulta analítica ocupa recursos que a operação precisa. Ver OLTP.

Conceitos Centrais

A assinatura

volume de consultas baixo (dezenas/dia a centenas/hora)
registros por consulta milhões
acesso varredura com filtro por período
proporção leitura quase exclusiva
latência aceitável segundos a minutos
dados histórico, frequentemente imutável
consistência eventual é suficiente

A última linha é importante e frequentemente ignorada: relatório sobre o mês passado não precisa dos dados de agora. Isso libera a arquitetura inteira.

Armazenamento colunar muda a ordem de grandeza

Uma consulta analítica típica lê poucas colunas de muitas linhas. Armazenamento colunar guarda cada coluna junta, então ler duas colunas de uma tabela de cinquenta lê apenas o que é preciso.

O ganho não é marginal. Some-se a compressão — valores semelhantes adjacentes comprimem muito bem — e a diferença costuma ser de uma a duas ordens de grandeza.

Desnormalizar é a escolha certa aqui

O critério que vale em OLTP se inverte. Como não há escrita concorrente e as consultas varrem, desnormalizar elimina junções sem custo de manutenção relevante.

É a razão de modelos dimensionais — fato no centro, dimensões ao redor — dominarem o desenho analítico.

Pré-agregação troca espaço por tempo

Se as mesmas agregações são consultadas repetidamente, calculá-las antecipadamente transforma minutos em milissegundos.

O custo é espaço, atraso de atualização e o risco de divergência entre o agregado e a fonte. A verificação periódica de que os dois batem é o controle que costuma faltar.

O dado analítico é histórico, e isso muda tudo

Registros analíticos não mudam depois de escritos. Isso permite particionar por tempo, comprimir agressivamente, arquivar em armazenamento barato e reprocessar sem coordenação.

Um sistema analítico que trata os dados como mutáveis está pagando um custo que não precisa pagar.

Auto-atendimento tem um custo que ninguém orça

Dar acesso analítico direto aos times de negócio é valioso e traz uma consequência previsível: consultas mal escritas, varreduras completas sem filtro de período, e custo que cresce sem teto.

Limite de tempo, cota por usuário e obrigatoriedade de filtro de partição não são burocracia — são o que mantém a plataforma viável.

Frescor é um requisito a ser perguntado, não presumido

A pergunta que mais economiza esforço numa plataforma analítica: com que idade máxima o dado ainda serve para essa decisão?

A resposta quase nunca é "em tempo real", e quando é, geralmente vem de intuição e não de necessidade. Um relatório de fechamento mensal não melhora com atualização por minuto. Um painel de acompanhamento diário tampouco.

A diferença de custo entre as faixas é grande:

diário carga em lote noturna, barato e simples
horário carga incremental, moderado
minutos processamento contínuo, caro
segundos arquitetura de fluxo dedicada, muito caro

Adotar a faixa de segundos para um requisito que era diário é a forma mais comum de multiplicar o custo de uma plataforma analítica sem que ninguém perceba a troca.

Modelo Mental

OLAP é sobre poucas consultas que leem muito. Colunar, desnormalizado e histórico — os três decorrem disso.

Quando Usar

  • Relatório, painel, análise exploratória.
  • Agregação sobre grandes volumes históricos.
  • Consultas ad hoc que não se sabe de antemão.
  • Latência de segundos é aceitável.
  • Dados de vários sistemas precisam ser cruzados.

Quando Não Usar

Para operação em tempo real. Se um usuário espera resposta imediata para seguir num fluxo, não é analítico.

Para escrita frequente de registros individuais. Armazenamento colunar é ruim nisso.

Como fonte da verdade operacional. É derivado.

Quando o volume não justifica. Alguns milhões de linhas num banco relacional bem indexado não precisam de plataforma analítica.

A última evita a maioria dos projetos de plataforma analítica prematuros: a complexidade só se paga acima de certo volume.

Alternativas

  • Réplica de leitura — separa a carga sem mudar tecnologia. Suficiente para volumes moderados.
  • Visão materializada — pré-agregação sem plataforma separada.
  • Data warehouse — quando há múltiplas fontes.
  • Consulta direta sobre arquivos — quando o volume é grande e a frequência baixa.

Trade-offs

ColunarOrientado a linha
Varredura de poucas colunas eficienteLê a linha inteira
Compressão altaMenor
Escrita individual caraBarata
Atualização caraBarata
Ideal para agregaçãoPara acesso por chave
Pré-agregadoCalculado na hora
MilissegundosSegundos a minutos
Espaço adicionalNenhum
Atraso de atualizaçãoSempre atual
Só as agregações previstasQualquer pergunta
Risco de divergir da fonteSem risco

Modos de Falha

Consulta sem filtro de partição. Varre o histórico inteiro e custa caro.

Agregado divergente da fonte. Ninguém compara.

Custo crescendo sem teto. Auto-atendimento sem cota.

Atualização atrasada sem sinal. O painel mostra dado de ontem como se fosse de hoje.

Duplicação na carga. Uma reexecução insere os mesmos fatos duas vezes, e os números dobram sem erro nenhum.

Erros Comuns

Rodar analítico no transacional. Uma varredura de meses de histórico compete por memória e disco com as transações do horário comercial, e degrada justamente o que não pode degradar.

Normalizar o modelo analítico. Normalização otimiza escrita e integridade; consulta analítica quer junções poucas e largas. Um modelo normalizado transforma uma pergunta simples numa junção de oito tabelas.

Montar plataforma analítica antes de o volume justificar. Até certo tamanho, uma réplica de leitura com alguns índices responde tudo — sem carga, sem modelagem dimensional e sem mais um sistema para operar.

Não expor a data da última atualização nos painéis. Uma carga quebrada há três dias mostra exatamente a mesma tela de uma carga correta, e a decisão é tomada sobre dado velho sem que ninguém suspeite.

Carga sem idempotência. Ver idempotência.

Exemplo Real

Uma empresa de varejo montou um painel executivo sobre o banco transacional replicado. Funcionou por um ano e degradou.

O problema não era o volume total — 200 milhões de linhas de venda. Era o formato: cada consulta do painel fazia junção entre venda, produto, loja e calendário, e agregava por mês.

Tempo de carregamento: 90 segundos. Os executivos pararam de usar.

A migração para um armazenamento colunar com modelo dimensional mudou os números: o mesmo painel passou a carregar em 1,4 segundo.

Três problemas apareceram depois.

Duplicação silenciosa. A carga diária falhou no meio e foi reexecutada. Os fatos daquele dia entraram duas vezes, e o faturamento apareceu inflado. Ninguém notou por seis dias, até um gerente estranhar o número da sua loja. A correção foi tornar a carga idempotente — apagar a partição do dia antes de recarregar.

Custo de auto-atendimento. Liberado o acesso direto, uma consulta sem filtro de período varria cinco anos de dados. Em um mês, o custo de consulta superou o de armazenamento em quatro vezes. Resolvido com filtro de partição obrigatório e cota por usuário.

Atualização atrasada. O painel mostrava dados de dois dias antes, sem indicar isso. Decisões foram tomadas com informação velha. A correção foi trivial e deveria ter existido desde o início: um carimbo de "dados até" em cada painel.

A equipe registra a terceira como a mais constrangedora — custou uma linha de interface e gerou a única consequência de negócio real das três.

Conceitos Relacionados

Exercício Prático

Pegue o painel mais consultado da sua empresa. Descubra de onde ele lê e quanto tempo leva.

Se ele lê do banco transacional, calcule quanto recurso ele consome no horário de pico. Esse número costuma ser o argumento que faltava.

Perguntas de Entrevista

  • Por que armazenamento colunar é melhor para agregação?
  • Por que o critério de normalização se inverte em analítico?
  • Como uma carga não idempotente corrompe números analíticos?

Para Aprofundar

  • Kimball, Ralph; Ross, Margy. The Data Warehouse Toolkit. 3ª ed. Wiley, 2013.
  • Kleppmann, Martin. Designing Data-Intensive Applications. O'Reilly, 2017 — capítulo 3.
  • Abadi, Daniel et al. The Design and Implementation of Modern Column-Oriented Database Systems, 2013.
Terminou de ler este documento?Seu progresso fica salvo apenas neste navegador.