Migrare all’architettura Snowpipe Streaming High Performance

I dati in tempo reale non riguardano più solo la velocità, ma anche throughput massivo, scalabilità prevedibile e dati pronti per essere interrogati non appena arrivano. Agenti AI e applicazioni intelligenti devono ragionare continuamente su dati freschi e su un contesto in tempo quasi reale, ed è questo che ci ha spinto a ripensare la nostra architettura di streaming ad alte prestazioni. I clienti stanno già sfruttando le più recenti innovazioni di Snowpipe Streaming per abilitare casi d’uso critici. Se Snowpipe Streaming Classic è stato il motore per l’ingestione a bassa latenza direttamente nelle tabelle Snowflake, la nuova generazione della nostra architettura di streaming consente di supportare workload AI più pesanti e complessi man mano che crescono da migliaia a milioni di eventi al secondo.
Questo post ha due obiettivi: spiegare l’enorme valore della nuova architettura Snowpipe Streaming High Performance e mostrarti quanto sia semplice migrare. Abbiamo progettato questa architettura per sbloccare fino a 10 GB/s di throughput per tabella nelle configurazioni supportate, ridurre la latenza end-to-end e semplificare la gestione dello streaming su larga scala, mantenendo al contempo un modello di pricing chiaro che offre prevedibilità anche con la crescita dei workload.
Appian, leader nell’automazione dei processi low-code, è migrata all’architettura High Performance per sostituire una pipeline di ingestione rigida e fortemente basata su codice. In precedenza, le modifiche allo schema richiedevano aggiornamenti complessi del codice per gestire manualmente i DDL. Con Snowpipe Streaming High Performance, Appian ha disaccoppiato la struttura delle tabelle dalla logica di ingestione, consentendo la gestione delle pipe tramite Terraform in modo trasparente per l’applicazione Java. Secondo Appian, il loro motore personalizzato “Snowblower” ora ingerisce quasi mezzo petabyte di dati di log al mese in 27 regioni, con prestazioni a bassa latenza nel loro ambiente.
"La migrazione da Snowpipe Streaming Classic a High Performance è stata senza soluzione di continuità e l’SDK e l’infrastruttura semplificati hanno migliorato significativamente la nostra esperienza complessiva. Attualmente gestiamo mezzo petabyte di dati al mese nel nostro ambiente più grande e non abbiamo ancora raggiunto un limite di throughput."
Aboubacar Toure
Ecco perché dovresti passare a Snowpipe Streaming High Performance e come farlo.
Perché eseguire l’upgrade? Il vantaggio di High Performance
Prestazioni su larga scala
Snowpipe Streaming High Performance sposta il carico principale di parsing e validazione dei file dal client al server. Disaccoppiando il percorso di ingestione tramite un oggetto Pipe, abbiamo sbloccato una scalabilità massiva. Ora puoi ottenere fino a 10 GB/s per tabella e una latenza end-to-end tipicamente compresa tra 5 e 10 secondi nei workload supportati. Grazie a migliori ottimizzazioni nel parsing dei dati, i nostri test interni hanno mostrato che layout di file ottimizzati possono portare a prestazioni di query downstream fino al 50% più rapide, rispetto a Snowpipe Streaming Classic, a seconda del workload e delle caratteristiche dei dati.
Abilitare casi d’uso di serving a bassa latenza con Interactive Tables
Le prestazioni non riguardano solo la velocità di ingestione, ma anche la latenza delle query su larga scala. Combinando Snowpipe Streaming High Performance con Snowflake Interactive Tables, puoi alimentare applicazioni ad alta concorrenza direttamente da Snowflake. Questo ti consente di evitare l’off-loading dei dati “hot” verso data store operativi esterni.
Se le tabelle standard eccellono nelle scansioni analitiche su larga scala, le Interactive Tables sono ottimizzate per analisi a bassa latenza e alta concorrenza, raggiungendo spesso tempi di risposta inferiori al secondo nei workload supportati. Puoi effettuare lo streaming dei dati direttamente al loro interno con una freschezza quasi in tempo reale. Questo consente di creare motori di personalizzazione real-time, dashboard rivolte ai clienti e applicazioni di analytics embedded che servono migliaia di utenti concorrenti. Questa architettura unificata semplifica lo stack riducendo costi e complessità legati al mantenimento di livelli di serving separati dedicati solo alla velocità.
Pricing prevedibile a tariffa fissa
Uno dei principali punti di attrito di Classic era il modello di costo legato al tempo di connessione dei client, una variabile che poteva scalare in modo imprevedibile in presenza di molti client inattivi. Snowpipe Streaming High Performance semplifica questo aspetto. Ora paghi una tariffa fissa di 0,0037 crediti per gigabyte non compresso. Paghi per i dati che trasferisci, non per il tempo in cui i client restano connessi.
Supporto multilinguaggio ed efficienza
Abbiamo superato il limite del solo Java. Snowpipe Streaming High Performance debutta con SDK di prima classe per Java e Python, oltre a un’API REST. Alla base, questi SDK sono stati ricostruiti su un core Rust ad alte prestazioni. Questo non li rende solo veloci, ma anche leggeri, e alcuni clienti riportano riduzioni fino al 30% nell’utilizzo di CPU e memoria lato client, a seconda del workload e dell’implementazione.
Nuove funzionalità: potenza senza complessità
Snowpipe Streaming High Performance introduce funzionalità che in Classic erano difficili da implementare.
Preclustering: ordinare i dati in ingresso
I dati di streaming arrivano spesso non ordinati, causando costose attività di manutenzione in background o query lente fino all’attivazione dell’autoclustering. Con Snowpipe Streaming High Performance puoi abilitare CLUSTER_AT_INGEST_TIME = TRUE. Questo consente di ordinare e clusterizzare i dati in transito prima che vengano scritti nello storage, permettendo ai dati di arrivare già in un formato altamente ottimizzato per prestazioni di query immediate.
Tipi di dati complessi
Lo streaming moderno non riguarda solo testo semplice. Snowpipe Streaming High Performance aggiunge un supporto avanzato per strutture di dati complesse, incluso il supporto nativo per i tipi GEOMETRY e GEOGRAPHY. Abbiamo inoltre aggiunto il supporto per valori di colonna fino a 128 MB, fondamentale per grandi blob JSON o dati variant complessi che superavano i limiti di Classic.
Trasformazioni stateless in-flight
Snowpipe Streaming High Performance introduce l’oggetto Pipe per abilitare trasformazioni stateless in-flight direttamente nel percorso di ingestione. Ora puoi applicare la logica standard del comando COPY, come il casting dei tipi di dato, l’estrazione JSON e il riordino delle colonne, prima che i dati arrivino nella tabella di destinazione.
Questo approccio può ridurre sia la latenza sia i costi infrastrutturali. Trasformando i dati in ingresso, elimini la necessità di tabelle di staging intermedie e delle risorse di calcolo richieste per l’elaborazione post-caricamento. I dati arrivano nella tabella finale pronti per l’analisi immediata, eliminando il ritardo associato ai job di trasformazione secondari.
Evoluzione nativa dello schema
In Classic, una modifica allo schema dei dati di origine spesso comportava l’interruzione della pipeline. Snowpipe Streaming High Performance supporta nativamente ENABLE_SCHEMA_EVOLUTION = TRUE. Le nuove colonne vengono rilevate e aggiunte automaticamente e i vincoli NOT NULL vengono rimossi dinamicamente, mantenendo la pipeline operativa anche con l’evoluzione dei dati.
La pipe predefinita
Per semplificare la migrazione, abbiamo introdotto la pipe predefinita. Non è necessario creare manualmente un oggetto Pipe per iniziare a usare Snowpipe Streaming High Performance. Se il tuo codice scrive su una tabella ma utilizza l’API High Performance, Snowflake gestisce automaticamente il routing. Questo significa che, se il codice Classic scriveva su Table_A, il codice Snowpipe Streaming High Performance può continuare a scrivere semplicemente su Table_A tramite la pipe predefinita, senza configurazioni aggiuntive.
Guida alla migrazione: il percorso verso High Performance
La migrazione è progettata come un processo semplice e senza perdita di dati.
Step 1: Verificare i prerequisiti
Assicurati che il tuo account Snowflake si trovi in una regione supportata. Da novembre 2025, Snowpipe Streaming High Performance è generalmente disponibile nelle distribuzioni commerciali AWS, Azure e GCP.
Per ulteriori informazioni su come iniziare, incluse le reference degli SDK e gli esempi di codice, consulta la documentazione.
Step 2: Aggiornare il codice
Aggiorna le dipendenze dell’applicazione all’ultima versione dell’SDK snowflake-streaming.
Ci sono due modifiche chiave all’API da considerare. Primo, il builder ora richiede il contesto dello schema. Invece di usare solo builder(channelName), dovrai utilizzare builder(channelName, dbName, schemaName). Secondo, il metodo di ingestione cambia da insertRow(...) a appendRow(...).
Step 3: Eseguire il cutover senza perdita di dati
Per passare da Classic a Snowpipe Streaming High Performance senza eliminare o duplicare record, è sufficiente trasferire l’offset token.
Metti in pausa l’applicazione di ingestione Classic.
Recupera l’ultimo offset token confermato dal client Classic utilizzando getLatestCommittedOffsetToken().
Inizializza il canale Snowpipe Streaming High Performance utilizzando quel token.
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestClient;
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestClientFactory;
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestChannel;
import java.util.Properties;
import java.util.Map;
import java.util.UUID;
// 1. Configure your client properties
Properties props = new Properties();
props.put("user", "my_user");
props.put("private_key", "MII...");
props.put("role", "my_role");
props.put("warehouse", "my_warehouse");
// 2. Create the client
SnowflakeStreamingIngestClient client = SnowflakeStreamingIngestClientFactory.builder(
"MY_CLIENT_NAME",
"MY_DATABASE",
"MY_SCHEMA",
"MY_PIPE" // TABLENAME-STREAMING can be used by default for any table
).setProperties(props).build();
// 3. Open a channel
// We use getChannel() to unwrap the response object
SnowflakeStreamingIngestChannel channel = client.openChannel("MY_CHANNEL_NAME", "0").getChannel();
// 4. Ingest a row
Map<String, Object> row = Map.of("c1", 123, "c2", "test_data");
// appendRow adds the row to the buffer
// "001" is the offset token tracking this specific record
channel.appendRow(row, "001");
Esempio Java che mostra il nuovo flusso API
Step 4: Verificare il risultato
Una volta che l’applicazione Snowpipe Streaming High Performance è in esecuzione, utilizza l’endpoint getChannelStatus o interroga la tabella di atterraggio per verificare che last_committed_offset_token stia avanzando e che il throughput si sia stabilizzato.
Conclusione
Snowpipe Streaming High Performance è più di un semplice aggiornamento di versione; è l’architettura che supporterà i workload real-time per il prossimo decennio. Con prestazioni da 10 GB/s, evoluzione nativa dello schema e pricing semplificato, non c’è mai stato un momento migliore per eseguire l’upgrade. Aggiornando semplicemente l’SDK client, aprendo un nuovo canale e cambiando il flusso di ingestione, sblocchi un enorme salto in termini di throughput ed efficienza con downtime minimo.
Ma il valore reale di questo upgrade va ben oltre le metriche di ingestione. Nell’era della Generative AI e dei Large Language Model, la latenza è fondamentale. Agenti AI e modelli predittivi sono efficaci quanto i dati che li alimentano; se i dati sono obsoleti, gli insight perdono valore. Snowpipe Streaming High Performance contribuisce a rendere l’architettura pronta per l’AI, fornendo il contesto fresco e a bassa latenza di cui i modelli hanno bisogno per offrire risultati accurati e azionabili nel momento giusto.
Il futuro dei dati è lo streaming, e il carburante di questo futuro è il tempo reale. Assicurati che la tua piattaforma sia pronta a gestirlo.

