Questo post è la seconda parte di una serie in due parti sull'ottimizzazione delle prestazioni delle AI/BI dashboard di Databricks su larga scala.
Nel post precedente, ci siamo concentrati su come layout, filtri, parametri e caching determinano la quantità di lavoro che il sistema esegue per ogni clic. Queste ottimizzazioni sono spesso sufficienti per rendere le dashboard veloci.
In questo post, ci concentriamo sulle fondamenta della piattaforma che la mantengono veloce con l'aumentare dell'utilizzo. Esamineremo la selezione e il dimensionamento del warehouse, la modellazione dei dati e le scelte dello schema, il layout dei file e il clustering e quando affidarsi alla materializzazione invece che alla rielaborazione per ottenere prestazioni stabili e prevedibili.
Abbina la forma della dashboard (pagine, mix di query, picchi di attività degli utenti) al tipo e alle dimensioni del DBSQL warehouse in modo che il sistema accetti il lavoro rapidamente senza accodamenti.
Poiché i widget visibili vengono inviati insieme, le dashboard generano naturalmente picchi di concorrenza di breve durata. Se il warehouse non è in grado di assorbire il picco, si verificherà l'accodamento (Peak Queued Queries > 0) e i tempi di caricamento dei riquadri saranno incoerenti, soprattutto nelle ore di punta.
Per maggiori dettagli, vedi: https://docs.databricks.com/aws/en/compute/sql-warehouse/warehouse-behavior
I modelli di dati ben progettati sono una caratteristica fondamentale per le prestazioni delle dashboard di AI/BI. Lo schema a stella rimane il modello di modellazione più efficace e prevedibile per le analitiche interattive perché si allinea direttamente con il modo in cui le query di BI vengono scritte e ottimizzate.
In uno schema a stella, una tabella dei fatti centrale contiene eventi misurabili (vendite, transazioni, clic) e si unisce alle tabelle delle dimensioni circostanti (data, cliente, prodotto, regione). Questa struttura minimizza la complessità dei join, riduce la duplicazione dei dati e consente aggregazioni efficienti con pattern di query semplici e stabili. Di conseguenza, le dashboard eseguono meno join, analizzano meno dati e beneficiano in modo più coerente della memorizzazione nella cache e dell'ottimizzazione delle query.
Un dettaglio fondamentale ma spesso trascurato è costituito dai tipi di dati delle chiavi di join. I join tra tabelle delle dimensioni e dei fatti devono utilizzare chiavi surrogate basate su interi, non stringhe. Le join di interi sono molto più veloci, richiedono meno memoria, migliorano l'efficienza della cache e consentono a Photon di eseguire le join utilizzando percorsi vettorializzati altamente ottimizzati. I join basati su stringhe aumentano il costo della CPU e possono diventare un collo di bottiglia nascosto con l'aumentare dei dati e della concorrenza.
In Databricks, questo pattern si adatta in modo naturale all'architettura Lakehouse. Il gold layer dovrebbe essere modellato come fatti e dimensioni archiviati come tabelle di Unity Catalog, fornendo una base semantica governata e riutilizzabile per le dashboard di AI/BI, le viste delle metriche e le viste materializzate.
La conclusione è semplice: modellare in base a come vengono effettivamente eseguite le query di BI. Uno schema a stella con chiavi di join intere nel gold layer offre un SQL più semplice, join più veloci e prestazioni più prevedibili su larga scala.
Progetta il layout dei tuoi dati in modo che le dashboard leggano molti meno dati per query, quindi lascia che il motore sfrutti le statistiche di Parquet e le letture selettive.
Databricks SQL è più veloce quando può:
Quindi i due vantaggi principali sono: compattare i file in dimensioni ottimali e
raggruppare i dati in modo che i predicati escludano i file.
Maggiori dettagli sono disponibili qui: https://www.databricks.com/discover/pages/optimize-data-workloads-guide
Un classico anti-pattern: un filtro di dashboard come WHERE customer_id = ? Sembra selettivo, ma se i dati non sono raggruppati in cluster, il motore elabora comunque una porzione enorme di file perché le righe corrispondenti sono sparse ovunque.
Risultato: meno file coinvolti, più blocchi saltati e un wall-clock più breve per le stesse informazioni dettagliate, senza indici fragili o tuning manuale.
Per maggiori dettagli, vedi:
In Ottimizzazione n. 7: Applicare le best practice di modellazione dei dati, ci siamo concentrati sull'importanza dello schema a stella con fatti, dimensioni e KPI chiaramente definiti. Le Metric Views sono una diretta continuazione di questi principi in Databricks AI/BI.
Le Viste metriche sono progettate sulla base della semantica della BI: sono costituite da misure e dimensioni, il che le rende un'astrazione naturale per la modellazione dei KPI. Consentono ai team di definire le metriche aziendali una sola volta e di riutilizzare gli stessi KPI in modo coerente su più dashboard, agenti e altri strumenti client. Ciò riduce la duplicazione, previene il drift dei KPI e mantiene la logica analitica allineata con l'aumento dell'adozione.
Con la Materializzazione per le viste delle metriche, Databricks precalcola e mantiene automaticamente gli aggregati usati di frequente. Questi aggregati vengono aggiornati in modo incrementale e, al momento della query, l'optimizer riscrive in modo trasparente le query della dashboard per utilizzare il risultato precalcolato più corrispondente. Di conseguenza, le query delle dashboard analizzano molti meno dati per interazione, senza che i team debbano gestire tabelle di aggregazione separate o pipeline personalizzate.
Se non vengono utilizzate le Viste metriche, lo stesso approccio può essere applicato con le Viste materializzate. Ad esempio, una versione aggregata di una grande tabella dei fatti può essere precalcolata e archiviata, consentendo alle dashboard di interrogare un set di dati molto più piccolo e ottimizzato. Ciò migliora notevolmente le prestazioni riducendo la quantità di dati analizzati ed evitando di ricalcolare ripetutamente aggregazioni dispendiose per ogni interazione dell'utente.
Tutte queste tecniche ottimizzano la stessa cosa: analizzare meno dati. Definendo i KPI una volta e precalcolando gli aggregati usati di frequente con Metric Views o Materialized Views, i dashboard evitano di aggregare ripetutamente tabelle di fatti di grandi dimensioni. Un numero inferiore di byte analizzati si traduce direttamente in query più veloci, una latenza più prevedibile e prestazioni migliori su larga scala.
Per maggiori dettagli, vedi:
I tipi di dati influenzano direttamente la quantità di dati che Databricks SQL deve leggere, spostare ed elaborare per ogni query della dashboard. Anche con SQL e caching perfetti, i tipi di dati inefficienti aumentano silenziosamente l'IO, la pressione sulla memoria e il costo della CPU, manifestandosi con riquadri più lenti e una concorrenza ridotta.
Dietro le quinte, Databricks SQL opera su file Parquet colonnari. Tipi di dati più piccoli e scelti con cura significano:
I meccanismi più importanti sono:
Nei carichi di lavoro di BI, queste scelte si sommano rapidamente: una pagina della dashboard può eseguire dozzine di query, ognuna delle quali esegue la scansione di milioni di righe. Colonne strette e ben tipizzate riducono i tempi di scansione, migliorano i tassi di riscontri nella cache e consentono a Photon di operare alla massima efficienza.
Regola generale: considerare la progettazione dello schema come una funzionalità per le prestazioni. Ottimizza i tipi di dati una volta nella Lakehouse e ogni dashboard, attuale e futura, ne beneficerà automaticamente.
Il tema comune a tutte e dieci le best practice è semplice: smetti di pagare il prezzo pieno di un'interazione con la dashboard ogni volta. Fai in modo che il sistema esegua meno lavoro per vista (meno fan-out, meno dati analizzati) e rendi il lavoro che esegue riutilizzabile (set di dati condivisi, query deterministiche, cache e aggregati precalcolati). Quando questi elementi sono allineati, le prestazioni diventano stabili in condizioni di concorrenza e i costi diventano prevedibili.
In pratica, dovresti essere in grado di rispondere "sì" a queste domande per le tue dashboard più utilizzate:
Scegli una dashboard con un'adozione reale, esegui una rapida valutazione di base (first paint, latenza di interazione, Peak Queued Queries, spill, tasso di riscontri nella cache), applica un paio delle modifiche a più alto impatto e misura di nuovo. Fallo con costanza e passerai da un AI/BI "a volte veloce" a un AI/BI affidabilmente veloce man mano che i dati e gli utenti crescono.
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
Produto
June 12, 2024/11 min de leitura

