Este post é a segunda parte de uma série de duas partes sobre como otimizar o desempenho do AI/BI dashboard da Databricks em grande escala.
No post anterior, focamos em como a disposição, os filtros, os parâmetros e o cache determinam quanto trabalho o sistema realiza a cada clique. Essas otimizações geralmente são suficientes para fazer com que os dashboards pareçam rápidos.
Nesta postagem, mudamos o foco para os fundamentos da plataforma que as mantêm rápidas à medida que o uso cresce. Analisaremos a seleção e o dimensionamento do warehouse, a modelagem de dados e as escolhas de esquema, a disposição do arquivo e a clusterização, e quando depender da materialização em vez da recomputação para alcançar um desempenho estável e previsível.
Combine a estrutura do seu dashboard (páginas, combinação de consultas, picos de atividade do usuário) com o tipo e o dimensionamento do DBSQL warehouse para que o sistema aceite o trabalho rapidamente sem enfileiramento.
Como os widgets visíveis são enviados juntos, os dashboards naturalmente geram picos de simultaneidade de curta duração. Se o warehouse não conseguir absorver o pico, você verá enfileiramento (Pico de queries na Fila > 0) e tempos de carregamento de blocos inconsistentes, especialmente nos horários de pico.
Para obter mais detalhes, consulte: https://docs.databricks.com/aws/en/compute/sql-warehouse/warehouse-behavior
Modelos de dados bem projetados são um recurso fundamental de desempenho para painéis de AI/BI. O esquema estrela continua sendo o padrão de modelagem mais eficaz e previsível para analítica interativa, pois se alinha diretamente à forma como as queries de BI são escritas e otimizadas.
Em um esquema estrela, uma tabela de fatos central contém eventos mensuráveis (ventas, transações, cliques) e faz join às tabelas de dimensão ao redor (data, cliente, produto, região). Essa estrutura minimiza a complexidade das junções, reduz a duplicação de dados e permite agregações eficientes com padrões de consulta simples e estáveis. Como resultado, os dashboards executam menos joins, analisam menos dados e se beneficiam de forma mais consistente do cache e da otimização de queries.
Um detalhe crítico, mas muitas vezes esquecido, são os tipos de dados da chave de junção. As junções de tabelas de dimensão e de fatos devem usar chaves substitutas baseadas em inteiros, e não em strings. Integer joins são significativamente mais rápidas, exigem menos memória, melhoram a eficiência do cache e permitem que o Photon execute joins usando caminhos vetorizados altamente otimizados. joins baseadas em strings aumentam o custo de CPU e podem se tornar um gargalo oculto à medida que os dados e a simultaneidade aumentam.
No Databricks, esse padrão se encaixa naturalmente com a arquitetura Lakehouse. A camada ouro deve ser modelada como fatos e dimensões armazenados como tabelas do Unity Catalog, fornecendo uma base semântica governada e reutilizável para dashboards de AI/BI, exibições de métricas e exibições materializadas.
A lição é simples: modele para como as queries de BI realmente são executadas. Um esquema em estrela com keys de junção de inteiros na camada ouro oferece SQL mais simples, joins mais rápidas e desempenho mais previsível em escala.
Projete sua disposição de dados para que os dashboards leiam muito menos dados por query e, em seguida, deixe o mecanismo explorar as estatísticas do Parquet e as leituras seletivas.
O Databricks SQL é mais rápido quando pode:
Portanto, os dois maiores ganhos são: compactar arquivos em tamanhos ideais e
clusterizar dados para que os predicados eliminem arquivos.
Mais detalhes estão disponíveis aqui: https://www.databricks.com/discover/pages/optimize-data-workloads-guide
Um antipadrão clássico: um filtro de dashboard como WHERE customer_id = ? parece seletivo, mas se os dados não estiverem clusterizados, o motor ainda acessa uma grande parte dos arquivos porque as linhas correspondentes estão espalhadas por toda parte.
Resultado: menos arquivos acessados, mais blocos ignorados e menor tempo de relógio para as mesmas percepções, sem índices frágeis ou ajuste manual.
Para obter mais detalhes, consulte:
Em Otimização nº 7: aplicar as melhores práticas de modelagem de dados, focamos na importância do esquema em estrela com fatos, dimensões e KPIs claramente definidos. As Views de métricas são uma continuação direta desses princípios no Databricks AI/BI.
As Metric Views são projetadas em torno da semântica de BI: elas consistem em medidas e dimensões, o que as torna uma abstração natural para modelar KPIs. Elas permitem que as equipes definam métricas de negócios uma vez e reutilizem os mesmos KPIs de forma consistente em vários dashboards, agentes e outras ferramentas de cliente. Isso reduz a duplicação, evita o KPI drift e mantém a lógica analítica alinhada à medida que a adoção aumenta.
Com a Materialização para views de métricas, o Databricks pré-computa e mantém automaticamente os agregados usados com frequência. Essas agregações são atualizadas incrementalmente e, no momento da query, o otimizador reescreve de forma transparente as queries do dashboard para o resultado pré-computado mais compatível. Como resultado, as consultas dos dashboards verificam muito menos dados por interação, sem exigir que as equipes gerenciem tabelas de agregação separadas ou pipelines personalizados.
Se as Metric Views não forem usadas, a mesma abordagem pode ser aplicada com Materialized Views. Por exemplo, uma versão agregada de uma tabela de fatos grande pode ser pré-calculada e armazenada, permitindo que os dashboards consultem um dataset muito menor e otimizado. Isso melhora significativamente o desempenho, reduzindo a quantidade de dados verificados e evitando o recálculo repetido de agregações dispendiosas para cada interação do usuário.
Todas essas técnicas otimizam a mesma coisa: verificar menos dados. Ao definir KPIs uma vez e pré-computar agregações usadas com frequência com Views de Métrica ou Views Materializadas, os dashboards evitam a agregação repetida de grandes tabelas de fatos. Menos bytes verificados se traduzem diretamente em queries mais rápidas, latência mais previsível e melhor desempenho em escala.
Para obter mais detalhes, consulte:
Os tipos de dados influenciam diretamente a quantidade de dados que o Databricks SQL precisa ler, mover e processar para cada query de dashboard. Mesmo com SQL e cache perfeitos, tipos de dados ineficientes aumentam silenciosamente a E/S, a pressão sobre a memória e o custo de CPU, manifestando-se como blocos mais lentos e simultaneidade reduzida.
Internamente, o Databricks SQL opera em arquivos Parquet colunares. Tipos de dados menores e bem escolhidos significam:
Alguns mecanismos são mais importantes:
Em cargas de trabalho de BI, essas escolhas se acumulam rapidamente: uma página de painel pode executar dezenas de queries, cada uma verificando milhões de linhas. Colunas estreitas e bem tipadas reduzem o tempo de varredura, melhoram as taxas de acerto de cache e permitem que o Photon opere com eficiência máxima.
Regra geral: trate o design do esquema como um recurso de desempenho. Otimize os tipos de dados uma vez no Lakehouse, e todo dashboard, atual e futuro, se beneficia automaticamente.
O tema em todas as dez melhores práticas é simples: pare de pagar o preço total de uma interação no dashboard toda vez. Faça o sistema trabalhar menos por visualização (menos fan-out, menos dados analisados) e faça com que o trabalho que ele realiza seja reutilizável (datasets compartilhados, queries determinísticas, caches e agregados pré-computados). Quando essas peças se alinham, o desempenho se torna estável sob concorrência — e o custo se torna previsível.
Na prática, você deve ser capaz de responder “sim” a estas perguntas para seus dashboards mais usados:
Escolha um dashboard com adoção real, execute uma linha de base rápida (primeira renderização, latência de interação, pico de queries enfileiradas, spill, taxa de acerto de cache), aplique algumas das alterações de maior impacto e meça novamente. Faça isso de forma consistente, e você passará de um AI/BI “às vezes rápido” para um confiavelmente rápido à medida que os dados e os usuários crescem.
(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original
Produto
June 12, 2024/11 min de leitura

