Architettura LTAP

Lake Transactional/Analytical Processing (LTAP) è un'architettura dati che serve sia carichi di lavoro transazionali (OLTP) che analitici (OLAP) da uno strato unificato di archiviazione dati nel lago, sotto un unico modello di governance, così da non dover mantenere sistemi transazionali e analitici separati sincronizzati. Rimuove le pipeline di acquisizione dei dati di cambiamento (CDC), replica e trasformazione che i team tradizionalmente mantengono per copiare i dati operativi in un sistema analitico separato. Azure Databricks costruisce LTAP sull'architettura di archiviazione Lakebase. Per l'annuncio, vedi Databricks launches LTAP: la prima architettura di elaborazione transazionale/analitica di Lake.

LTAP è un'architettura, non una singola caratteristica. Azure Databricks lo esegue tramite un insieme di funzionalità Lakebase che sono attivamente sviluppate ed espanse. Le funzionalità a tua disposizione dipendono dal tuo cloud. Questa pagina spiega l'architettura. Per le funzionalità che puoi utilizzare oggi sul tuo cloud, consulta Funzionalità che implementano LTAP.

Importante

Prima di leggere questa pagina, leggi l'architettura Lakebase per comprendere l'architettura Lakebase e i suoi componenti: computazione Postgres senza stato, safekeeper, page server e cloud object storage. LTAP si basa direttamente su come Lakebase separa il calcolo dallo storage, e il resto di questa pagina assume questa base.

Il costo di mantenere due stack sincronizzati

Le applicazioni suddividono il lavoro sui dati in due tipi di carichi di lavoro. I carichi di lavoro transazionali (OLTP) agiscono su poche righe alla volta e necessitano rapidamente di completare il contenuto completo di tali righe, come l'elaborazione di un pagamento o la restituzione di un risultato API. I carichi di lavoro analitici (OLAP) cercano insight su grandi dataset, spesso aggregando e unendo molte righe, come la previsione delle vendite o la rilevazione di frodi. Questi pattern tirano in direzioni opposte: OLTP necessita di letture e scritture costanti a bassa latenza su singole righe, mentre OLAP deve scansionare e aggregare su grandi volumi di dati. Per decenni, la risposta è stata due sistemi separati: un database transazionale per l'applicazione e un data warehouse o un lakehouse per l'analisi.

Fare da ponte tra quei due stack è la parte più costosa. Mantenerli sincronizzati significa eseguire la rilevazione dei dati di cambiamento (CDC), pipeline di streaming e repliche di lettura il cui unico compito è copiare dati da un sistema all'altro. Quell'infrastruttura è fragile, aggiunge latenza tra la scrittura dei dati e la loro analisi, e compete per le risorse con il database transazionale primario. Poiché applicazioni e agenti AI hanno sempre più bisogno di analisi sui dati transazionali più recenti, questo divario rallenta i team. Copiare dati tra due sistemi crea anche un rischio di governance: la linea di discendenza può interrompersi con il movimento dei dati, rendendo più difficile soddisfare obblighi come le richieste di rimozione GDPR.

Come unifica i dati LTAP al livello di archiviazione

Invece di creare una pipeline migliore tra due stack, LTAP elimina del tutto la necessità di una pipeline. Lo fa ripensando il database a partire dall'archiviazione.

Lakebase separa già il componente di calcolo Postgres stateless da un livello di archiviazione durevole composto da safekeepers, pageserver e object storage nel cloud. Una transazione viene confermata una volta che un quorum di safekeeper registra in modo duraturo il proprio write-ahead log, e i pageserver materializzano poi asincronamente tali modifiche nell’object storage cloud, così i dati non restano più confinati all’interno di un singolo motore di database.

Note

Per come Lakebase separa calcolo e storage, vedi architettura Lakebase.

LTAP aggiunge un passaggio a quel livello di archiviazione. Man mano che lo storage Lakebase materializza i dati in oggetti di archiviazione, essa transcodifica i dati Postgres orientati a righe nella disposizione colonnare di Parquet mentre i dati atterrano nel lago, dove sono leggibili tramite formati di tabelle aperte come Delta e Iceberg. Questa transcodifica permette a una singola copia dei dati di servire sia carichi di lavoro OLTP che OLAP. È progettato in modo che la copia colonnastica rimanga una rappresentazione fedele ed efficiente dell'originale di Postgres:

  • La semantica viene preservata. Lo storage Lakebase transcodifica ogni valore nella sua forma colonnale mantenendo la rappresentazione originale di Postgres, così che qualsiasi motore compatibile con Postgres possa reinterpretare i dati senza perdere informazioni. I tipi che non si mappano in modo pulito su Parquet, come NaN, NUMERIC overflow o i tipi di estensione come vector, array, geography e JSON, vengono conservati in un campo overflow che contiene la rappresentazione canonica di Postgres.
  • Le versioni a fila sono conservate. La transcodifica mantiene le versioni intermedie delle righe, quindi la copia colonnare contiene le stesse informazioni di versione dei dati riga.
  • I dati in formato colonnare si comprimono bene. La disposizione a colonne è fortemente compressa, il che riduce l'ingombro di memoria e la quantità di dati spostati da e verso l'archiviazione degli oggetti.

La transcodifica gira interamente nel livello di storage, isolata dall'istanza primaria di Postgres, quindi non influisce sul tuo carico di lavoro di servizio transazionale. Si basa su qualcosa che Lakebase già fa: scaricare dati compromettiti verso uno storage cloud di oggetti. LTAP aggiunge semplicemente il formato colonnare allo stesso flush. Non c'è alcuna pipeline da costruire, né alcun processo esterno da eseguire che interroghi il tuo database.

Il livello di calcolo di Lakebase invia il WAL al livello di archiviazione, dove i safekeepers lo registrano in modo definitivo e il livello di archiviazione di Lakebase transcodifica i dati Postgres dal formato a righe nel formato colonnare Parquet, leggibile tramite formati di tabella aperti come Delta e Iceberg.

Non tutto è transcodificato. Gli indici Postgres rimangono nella loro rappresentazione originale nel livello di storage durevole, invece di essere convertiti in colonne, quindi le letture e le ricerche dei punti transazionali restano veloci mentre la copia columnare serve le analisi.

Poiché i dati vivono in archiviazione esternalizzata e versionata, creare un branch o ripristinare a un certo punto temporale è un'operazione di metadati piuttosto che una copia fisica. Puoi ramificare un grande database di produzione in pochi secondi, eseguire un esperimento o una migrazione rischiosa contro il branch e scartarlo, senza duplicare i dati sottostanti.

Note

Un ramo Lakebase è un clone con scrittura su copia dell'archiviazione del tuo database: condivide i dati esistenti del ramo padre e memorizza solo ciò che cambia, quindi inizialmente non duplica alcun dato. Il ripristino in un momento utile utilizza lo stesso archiviamento versionato per riportare un database a un momento precedente all'interno della finestra di ripristino. Per saperne di più, consulta Branch del database e Ripristino a un punto nel tempo.

Questo approccio a livello di archiviazione è ciò che distingue LTAP dalla change data capture (CDC). CDC replica i dati dal tuo storage OLTP in un livello di analisi separato utilizzando un processo esterno che interroga continuamente il database principale e una pipeline che trasforma i cambiamenti di riga in dati colonnari. Quella pipeline consuma risorse sul tuo database transazionale principale, ti fa gestire tu stesso le modifiche di schema e i casi limite, e scambia la freschezza dei dati con il costo della pipeline, il tutto aggiungendo punti di guasto. LTAP adotta invece un approccio a livello di storage: lo storage Lakebase trascodifica i dati nel lago come parte del normale funzionamento dello storage, senza alcun processo esterno che competa con il tuo carico di lavoro e senza pipeline da costruire o mantenere.

I tre pilastri di LTAP

Unificare i dati a livello di storage conferisce a LTAP tre proprietà distintive.

  • Governo universale. Unity Catalog regola l'accesso analitico a una copia logica dei tuoi dati su entrambi i carichi di lavoro.
  • Motori appositamente progettati. Postgres si occupa delle transazioni e il Lakehouse di analytics, e nessuno dei due compromette l'altro.
  • Una singola copia logica in archiviazione aperta. Entrambi i motori leggono una copia dei tuoi dati in formati aperti, senza repliche o pipeline da mantenere sincronizzate.

Unity Catalog governa un’unica copia logica dei dati, mentre Lakebase serve l’OLTP dalle pagine di Postgres e il Lakehouse supporta l’OLAP dal formato colonnare Parquet, su un’unica copia in uno storage aperto senza replica.

Governo universale

Unity Catalog regola l'accesso analitico ai tuoi dati su entrambi i carichi di lavoro. Dopo aver registrato un database Lakebase, Unity Catalog applica autorizzazioni, lineage e audit alle risorse di calcolo esterne che lo leggono.

Note

La governance di Unity Catalog si applica oggi all'accesso analitico: il motore di calcolo esterno, come Lakehouse//RT e Change Data Feed, che legge i dati Lakebase registrati. Non governa ancora direttamente le singole tabelle di Postgres. L'accesso tramite il percorso transazionale , cioè applicazioni e client che si collegano a Postgres, è comunque controllato dai privilegi standard di Postgres (GRANT e REVOKE), non dal Catalogo Unity. In pratica, Unity Catalog regola l'accesso analitico e l'accesso a lakehouse, mentre i ruoli e i privilegi di Postgres regolano l'accesso transazionale.

Motori appositamente costruiti

Postgres serve il tuo carico di lavoro transazionale e il Lakehouse serve l'analisi, ognuno con i punti di forza per cui è stato creato. Un errore comune è che unificare i due faccia sì che i dati operativi diventino dati freddi rimasti in un iceberg. Non è così. Lakebase rimane lo standard Postgres. L'indicizzazione, la creazione di rami, il ripristino a un punto nel tempo, le estensioni e le letture e scritture puntuali a bassa latenza continuano a funzionare esattamente come avviene oggi.

Le letture analitiche non competono con il tuo carico di lavoro transazionale perché sono isolate dall'istanza primaria di Postgres. Quando un motore analitico come Lakehouse//RT interroga dati Lakebase in tempo reale, restituisce un risultato fresco e transazionalmente coerente senza copiare i dati:

  • Il motore legge la maggior parte dei dati dalla copia a colonne nell'object storage, non da Postgres.
  • Per ottenere una vista transazionalmente consistente, richiede a Postgres solo il numero di sequenza del log corrente (LSN), un singolo valore che indica una posizione nel log di pre-scrittura. Questa è una ricerca economica sui metadati.
  • Per il piccolo insieme di cambiamenti molto recenti che non si sono ancora materializzati nel lago, li legge dal pageserver e li fusiona sopra.

Postgres non fornisce alcun traffico di lettura analitico oltre a restituire quel singolo LSN, e la transcodifica viene eseguita nel livello di storage, non sull'istanza Postgres che serve la tua applicazione. Il tuo carico di lavoro operativo continua a funzionare come previsto.

Una singola copia logica in archiviazione aperta

Poiché i dati risiedono nel data lake in formato Parquet colonnare, leggibile tramite formati di tabella aperti come Delta e Iceberg, Lakebase (OLTP) e il Lakehouse (OLAP) condividono la stessa base di archiviazione. Si mantiene una copia logica dei dati su entrambi i carichi di lavoro, invece di riconciliare un database transazionale con una copia analitica separata.

Ogni motore può memorizzare in cache o rappresentare quei dati in un formato fisico diverso per le prestazioni. Lakebase utilizza le pagine Postgres per letture puntuali OLTP rapide, mentre i motori analitici leggono il Parquet in formato colonnare. Continui a lavorare con un unico dataset logico, invece di mantenere copie transazionali e analitiche separate e tenerle sincronizzate.

Ogni tavolo ha un singolo scrittore, sia Lakebase che la casa del lago. Entrambi i motori leggono quella copia logica, quindi gli stessi dati sono disponibili per le tue applicazioni e per l'analytics senza una seconda copia.

Devi cambiare il modo in cui usi Lakebase

No. Adottare funzionalità LTAP non richiede una migrazione dei dati o un cambiamento nel modo in cui le tue applicazioni si connettono a Lakebase. Lakebase rimane lo standard Postgres: le tue estensioni, indici, query e codice applicativo esistenti continuano a funzionare invariati. Ciascuna delle funzionalità LTAP è indipendente, quindi puoi adottarne qualsiasi quando un carico di lavoro ne ha bisogno.

Capacità che implementano LTAP

Si mette in pratica l'architettura LTAP attraverso un insieme di funzionalità di Lakebase. Ognuno si basa sulla base di storage condiviso descritta sopra e insieme copre i percorsi che i dati percorrono tramite LTAP:

  • Governa e registra: porta i dati di Lakebase sotto Unity Catalog.
  • Distribuisci i dati del lakehouse in Lakebase: tabelle sincronizzate, accelerate dalle scritture dirette LTAP.
  • Consulta dati Lakebase in tempo reale: Lakehouse//RT per l'analisi, Lakebase Change Data Feed per i flussi di cambiamento.

Il diagramma seguente mostra come queste capacità scrivono e leggono da una copia dei tuoi dati, regolata da Unity Catalog.

Come i dati si muovono attraverso LTAP: tabelle sincronizzate e scritture dirette LTAP caricano i dati lakehouse in Lakebase, l'applicazione scrive e legge Lakebase in modo transazionale, Lakebase si materializza in una copia dei dati in open storage governata da Unity Catalog, e Lakehouse//RT legge quella copia in tempo reale mentre Change Data Feed trasmette modifiche a livello di riga verso tabelle e pipeline Delta.

Lakehouse//RT e Lakebase Change Data Feed leggono entrambi gli stessi dati sottostanti ma li rappresentano in modo diverso. Lakehouse//RT legge lo stato attuale dei dati Postgres in tempo reale per l'analisi. Change Data Feed fornisce un flusso di modifiche a livello di riga per pipeline downstream e attività di audit. Né lo è il CDC esterno che LTAP elimina: entrambi operano su un'unica copia dei dati.

La tabella seguente elenca ogni capacità LTAP e cosa fa, insieme allo stato di rilascio sul tuo cloud. La disponibilità varia a seconda del cloud, quindi una funzionalità non offerta sul tuo cloud viene contrassegnata come non disponibile.

Capability Condizione Description
Registra Lakebase nel Catalogo Unity GA Gestire l'accesso analitico ai dati di Lakebase ed eseguire query tra più origini dal lakehouse.
Gestire i dati con tabelle sincronizzate GA Serve i dati della tabella Unity Catalog in Lakebase per letture OLTP a bassa latenza. LTAP Direct Writes (Beta) accelera il caricamento iniziale in ogni modalità di sincronizzazione, oltre ai refresh completi.
Lakehouse//RT interroga Lakebase Versione Beta Esegui query OLAP transazionalmente coerenti sui dati Postgres in tempo reale, senza compromettere le prestazioni OLTP di Lakebase.
Feed di dati delle modifiche di Lakebase Public Preview Memorizza le modifiche a livello di riga dalle tabelle Postgres di Lakebase come tabelle Delta del Catalogo Unity per pipeline downstream e audit.

Come approcciare l'implementazione

Ora che conosci le funzionalità, la domanda è di quali ha bisogno il tuo carico di lavoro. Implementi LTAP combinando le funzionalità che corrispondono al flusso dei dati nella tua architettura.

La decisione chiave è la direzione: per ogni dataset, quale sistema possiede la scrittura? Ogni tabella ha un singolo scrittore, e questo determina quali funzionalità utilizzi.

  • Lakebase si occupa della scrittura. La tua applicazione scrive su Postgres, e vuoi che quei dati operativi siano disponibili per l'analisi senza doverli copiare. Ad esempio, un'applicazione di vendita scrive ordini e pagamenti a Lakebase man mano che avvengono. Usa Lakehouse//RT per gestire una dashboard di ricavi in tempo reale su quegli ordini, oppure Lakebase Change Data Feed per trasmettere ogni modifica d'ordine in una pipeline a valle o in un registro di audit.
  • La casa sul lago possiede la scrittura. I tuoi dati vengono generati o gestiti nel lakehouse e vuoi eseguire letture OLTP a bassa latenza di tali dati dalla tua applicazione. Ad esempio, un lavoro serale a una casa sul lago elabora raccomandazioni di prodotti o una tabella di prezzi. Usa tabelle sincronizzate per inserire quei dati in Lakebase così la tua applicazione può leggerli con bassa latenza, e abilita le scritture dirette LTAP per accelerare il carico iniziale di una tabella grande.

Mappate ogni set di dati a uno di questi percorsi, registrate il database in Unity Catalog ai fini della governance, quindi seguite la documentazione relativa alle funzionalità per implementare ciascun percorso. Una singola applicazione utilizza spesso entrambe le direzioni: fornendo dati di riferimento dal lakehouse a Postgres, mentre espone a fini analitici le proprie scritture transazionali. La disponibilità varia a seconda del cloud, quindi controlla la tabella delle capacità sopra per confermare cosa è offerto sul tuo cloud.

Passaggi successivi

Ulteriori informazioni