Importazione di dati in streaming - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Importazione di dati in streaming

L'importazione dati in streaming a bassa latenza e ad alta velocità viene eseguita da flusso di dati Amazon Kinesis e da Streaming gestito da Amazon per Apache Kafka in una vista materializzata di Amazon Redshift o di Amazon Redshift serverless con provisioning. Questa operazione riduce il tempo necessario per accedere ai dati e aiuta a diminuire i costi di archiviazione. È possibile configurare l'importazione dati in streaming per il cluster Amazon Redshift o per Amazon Redshift serverless e creare una vista materializzata utilizzando istruzioni SQL, come descritto in Creazione di viste materializzate in Amazon Redshift. Dopodiché, utilizzando l'aggiornamento delle viste materializzate, puoi importare centinaia di megabyte di dati al secondo. Ciò si traduce in un rapido accesso ai dati esterni che vengono rapidamente aggiornati.

Flusso di dati

Un cluster Amazon Redshift con provisioning o un gruppo di lavoro Amazon Redshift serverless è il consumer del flusso. Una vista materializzata è l'area di destinazione dei dati letti dal flusso, che vengono elaborati man mano che arrivano. Ad esempio, i valori JSON possono essere consumati e mappati alle colonne di dati della vista materializzata utilizzando comuni istruzioni SQL. Quando la vista materializzata viene aggiornata, Redshift utilizza i dati dagli shard di dati Kinesis allocati o dalle partizioni Kafka finché la vista non raggiunge la parità con quella per lo stream Kinesis o last per l'argomento Kafka. SEQUENCE_NUMBER Offset La vista materializzata successiva aggiorna i dati di lettura dall'ultima SEQUENCE_NUMBER del precedente aggiornamento fino a quando non raggiunge la parità con i dati del flusso o dell'argomento.

Casi d'uso dell'importazione dati in streaming

I casi d'uso per l'importazione dati in streaming di Amazon Redshift richiedono la gestione di dati generati continuamente (in streaming) e che devono essere elaborati entro un breve periodo (latenza) dalla loro generazione. Si chiama analisi dei dati quasi in tempo reale. Le fonti di dati possono variare e includono dispositivi IOT, dati telemetrici di sistema o dati di clickstream di applicazioni o siti Web occupati.

Considerazioni sull'importazione dati in streaming

Di seguito sono riportate importanti considerazioni e best practice riguardanti le prestazioni e la fatturazione durante la configurazione dell'ambiente di importazione dei dati in streaming.

  • Utilizzo e attivazione dell'aggiornamento automatico: le query di aggiornamento automatico per una o più viste materializzate vengono trattate come qualsiasi altro carico di lavoro dell'utente. L'aggiornamento automatico carica i dati dal flusso non appena arrivano.

    L'aggiornamento automatico può essere attivato in modo esplicito per una vista materializzata creata per l'importazione di dati in streaming. A tale scopo, specifica AUTO REFRESH nella definizione della vista materializzata. L'impostazione predefinita è l'aggiornamento manuale. Per specificare l'aggiornamento automatico di una vista materializzata esistente per l'importazione di dati in streaming, puoi eseguire ALTER MATERIALIZED VIEW per attivarlo. Per ulteriori informazioni, consulta CREATE MATERIALIZED VIEW o ALTER MATERIALIZED VIEW.

  • Importazione dati in streaming e Amazon Redshift serverless: le stesse istruzioni per l'impostazione e la configurazione che si applicano all'importazione dati in streaming di Amazon Redshift su un cluster con provisioning si applicano anche all'importazione dati in streaming su Amazon Redshift serverless. È importante dimensionare Amazon Redshift serverless con il livello di RPU necessario per supportare l'importazione dati in streaming con aggiornamento automatico e altri carichi di lavoro. Per ulteriori informazioni consulta Fatturazione per Amazon Redshift Serverless.

  • Amazon Redshift nodes in a different availability zone than the Amazon MSK cluster (Nodi Amazon Redshift in una zona di disponibilità diversa rispetto al cluster Amazon MSK): quando si configura l'importazione dati in streaming, Amazon Redshift tenta di connettersi a un cluster Amazon MSK nella stessa zona di disponibilità, se è abilitato il riconoscimento del rack per Amazon MSK. Se tutti i nodi si trovano in zone di disponibilità diverse da quelle del cluster Amazon Redshift, potrebbero venire applicati costi di trasferimento dei dati tra le zone di disponibilità. Per evitare ciò, mantieni almeno un nodo del cluster di broker Amazon MSK nella stessa zona del cluster o del gruppo di lavoro con provisioning Redshift.

  • Posizione dell'aggiornamento iniziale: dopo aver creato una vista materializzata, l'aggiornamento iniziale inizia dal TRIM_HORIZON di un flusso Kinesis o dall'offset 0 di un argomento Amazon MSK.

  • Formati di dati: sono supportati solo i formati di dati che possono essere convertiti da VARBYTE. Per ulteriori informazioni, consulta Tipo VARBYTE e Operatori VARBYTE.

  • Aggiunta di record a una tabella: puoi eseguire ALTER TABLE APPEND per aggiungere righe a una tabella di destinazione da una vista materializzata di origine esistente. Funziona solo se la vista materializzata è configurata per l'importazione dati in streaming. Per ulteriori informazioni, consulta ALTER TABLE APPEND.

  • Esecuzione di TRUNCATE o DELETE: puoi rimuovere i record da una vista materializzata utilizzata per l'importazione dati in streaming, utilizzando due metodi:

    • TRUNCATE: questo comando elimina tutte le righe da una vista materializzata configurata per l'importazione dati in streaming. Non esegue una scansione della tabella. Per ulteriori informazioni, consulta TRUNCATE.

    • DELETE: questo comando elimina tutte le righe da una vista materializzata configurata per l'importazione dati in streaming. Per ulteriori informazioni, consulta DELETE.

Buone pratiche e consigli per l'inserimento dello streaming

In alcuni casi ti vengono presentate delle opzioni su come configurare l'ingestione dello streaming. Consigliamo le seguenti best practice. Queste si basano sui nostri test e aiutano i clienti a evitare problemi che portano alla perdita di dati.

  • Estrazione di valori dai dati in streaming: se utilizzi la funzione JSON_EXTRACT_PATH_TEXT nella definizione della vista materializzata per eliminare lo streaming JSON in entrata, ciò può influire in modo significativo su prestazioni e latenza. Per spiegare, per ogni colonna estratta utilizzando JSON_EXTRACT_PATH_TEXT, il JSON in entrata viene analizzato nuovamente. Successivamente, si verifica qualsiasi conversione, filtraggio e logica aziendale del tipo di dati. Ciò significa, ad esempio, che se estrai 10 colonne dai tuoi dati JSON, ogni record JSON viene analizzato 10 volte, il che include conversioni di tipo e logica aggiuntiva. Ciò si traduce in una maggiore latenza di ingestione. Un approccio alternativo che consigliamo consiste nell'utilizzare la funzione JSON_PARSE per convertire i record JSON nel tipo di dati SUPER di Redshift. Dopo che i dati in streaming arrivano nella vista materializzata, usa PartiQL per estrarre singole stringhe dalla rappresentazione dei dati JSON fornita da SUPER. Per ulteriori informazioni, consulta Interrogazione di dati semistrutturati.

    È anche importante notare che JSON_EXTRACT_PATH_TEXT ha una dimensione massima dei dati di 64 KB. Pertanto, se un record JSON è più grande di 64 KB, l'elaborazione con JSON_EXTRACT_PATH_TEXT genera un errore.

  • Mappatura di uno Amazon Kinesis Data Streams stream o di un argomento Amazon MSK a una vista materializzata di streaming-ingestion di Amazon Redshift: non è consigliabile creare più viste materializzate di streaming-ingestion per importare dati da un singolo flusso o argomento Amazon MSK. Amazon Kinesis Data Streams Questo perché ogni vista materializzata crea un consumatore per ogni shard nel flusso o nella partizione Kinesis Data Streams nell'argomento Kafka. Ciò può comportare una limitazione o un superamento della velocità effettiva dello stream o dell'argomento. Inoltre, può comportare costi più elevati, poiché si acquisiscono gli stessi dati più volte. Ti consigliamo di creare una visualizzazione materializzata in streaming per ogni stream o argomento.

    Se il tuo caso d'uso richiede l'inserimento dei dati da un flusso KDS o da un argomento MSK in più viste materializzate, consulta il blog AWS Big Data, in particolare sulle migliori pratiche per implementare l' near-real-time analisi usando Amazon Redshift Streaming Ingestion with Amazon MSK, prima di farlo.

Utilizzo dell'importazione dati in streaming rispetto ai dati di gestione temporanea in Amazon S3

Esistono diverse opzioni per i dati in streaming su Amazon Redshift o su Amazon Redshift serverless. Due opzioni ben note sono l'ingestione dello streaming, come descritto in questo argomento, o la configurazione di un flusso di distribuzione su Amazon S3 con Firehose. L'elenco seguente descrive ciascun metodo:

  1. L'importazione dati in streaming dal flusso di dati Amazon Kinesis o Streaming gestito da Amazon per Apache Kafka ad Amazon Redshift o ad Amazon Redshift serverless implica la configurazione di una vista materializzata per ricevere i dati.

  2. La distribuzione di dati in Amazon Redshift tramite Kinesis Data Streams e lo streaming tramite Firehose implica la connessione del flusso di origine ad Amazon Data Firehose e l'attesa che Firehose esegua lo staging dei dati in Amazon S3. Questo processo utilizza batch di varie dimensioni a intervalli di buffer di lunghezza variabile. Dopo lo streaming su Amazon S3, Firehose avvia un comando COPY per caricare i dati.

Con l'importazione dati in streaming, si evitano diverse fasi necessarie per il secondo processo:

  • Non è necessario inviare dati a un flusso di distribuzione di Amazon Data Firehose, perché con lo streaming ingestion, i dati possono essere inviati direttamente da Kinesis Data Streams a una vista materializzata in un database Redshift.

  • Non è necessario trasferire i dati in streaming in Amazon S3, perché i dati dell'importazione dati in streaming vengono inviati direttamente alla vista materializzata di Redshift.

  • Non è necessario scrivere ed eseguire i comandi COPY perché i dati nella vista materializzata vengono aggiornati direttamente dal flusso. Il caricamento dei dati da Amazon S3 a Redshift non fa parte del processo.

Tieni presente che l'importazione dati in streaming è limitata ai flussi dal flusso di dati Amazon Kinesis e agli argomenti di Amazon MSK. Per lo streaming da Kinesis Data Streams verso destinazioni diverse da Amazon Redshift, è probabile che sia necessario un flusso di distribuzione Firehose. Per ulteriori informazioni, consulta Invio di dati a un flusso di distribuzione Amazon Data Firehose.

Considerazioni

Di seguito sono riportate alcune considerazioni per l'inserimento dello streaming in Amazon Redshift.

Caratteristica o comportamento Descrizione
Limite di lunghezza dell'argomento Kafka

Non è possibile utilizzare un nome di un argomento Kafka di lunghezza superiore a 128 caratteri (escluse le virgolette). Per ulteriori informazioni, consulta Nomi e identificatori.

Aggiornamenti e JOIN incrementali su una vista materializzata

La vista materializzata deve essere gestibile in modo incrementale. Non è possibile eseguire il ricalcolo completo per Kinesis o Amazon MSK perché per impostazione predefinita non conservano la cronologia dei flussi o degli argomenti per più di 24 ore o 7 giorni. È possibile impostare periodi di conservazione dei dati più lunghi in Kinesis o Amazon MSK. Tuttavia, ciò può comportare una manutenzione maggiore e costi superiori. Inoltre, al momento i JOIN non sono supportati nelle viste materializzate create su un flusso Kinesis o su un argomento Amazon MSK. Dopo aver creato una vista materializzata su un flusso o un argomento, è possibile creare un'altra vista materializzata da utilizzare per connettere la vista materializzata in streaming ad altre viste materializzate, tabelle o viste.

Per ulteriori informazioni, consulta REFRESH MATERIALIZED VIEW.

Analisi dei record

L'importazione dati in streaming di Amazon Redshift non supporta l'analisi di record aggregati dalla Kinesis Producer Library (Concetti chiave KPL – Aggregazione). I record aggregati vengono importati, ma vengono archiviati come dati buffer del protocollo binario. (Consulta la sezione relativa ai Buffer di protocollo per ulteriori informazioni). A seconda di come si esegue il push dei dati su Kinesis, potrebbe essere necessario disabilitare questa funzionalità.

Decompressione

Al momento VARBYTE non supporta alcun metodo di decompressione. Pertanto, non è possibile eseguire query sui record contenenti dati compressi in Redshift. Decomprimi i dati prima di eseguirne il push nel flusso Kinesis Streams o nell'argomento Amazon MSK.

Dimensione massima dei record

La dimensione massima dei campi dei record che Amazon Redshift è in grado di importare da Kinesis o Amazon MSK è di poco inferiore a 1 MB. I seguenti punti descrivono in dettaglio il comportamento:

  • Lunghezza massima VARBYTE: per l'ingestione dello streaming, il VARBYTE tipo supporta dati fino a una lunghezza massima di 1.024.000 byte. Kinesis limita i payload a 1 MB.

  • Limiti dei messaggi: la configurazione predefinita di Amazon MSK limita i messaggi a 1 MB. Inoltre, se un messaggio include intestazioni, la quantità di dati è limitata a 1.048.470 byte. Le impostazioni predefinite non creano problemi di importazione. Tuttavia, è possibile modificare la dimensione massima dei messaggi per Kafka, e quindi per Amazon MSK, impostandola su un valore maggiore. In questo caso, è possibile che il campo chiave/valore di un record Kafka, o l'intestazione, superi il limite di dimensione. Questi record possono causare un errore e non vengono importati.

Nota

Amazon Redshift supporta una dimensione massima di 1.024.000 byte per l'acquisizione di streaming da Kinesis o Amazon MSK, anche se Amazon Redshift supporta una dimensione massima di 16 MB per il tipo di dati. VARBYTE

Record che generano errori

I record che non possono essere importati in Redshift perché la dimensione dei dati supera quella consentita vengono ignorati. In questo caso, l'aggiornamento della vista materializzata ha comunque esito positivo e un segmento di ogni record che genera un errore viene scritto nella tabella di sistema SYS_STREAM_SCAN_ERRORS. Gli errori derivanti da logica di business, ad esempio un errore in un calcolo o un errore dovuto alla conversione di un tipo, non vengono ignorati. Per evitarli, testa attentamente la logica prima di aggiungerla alla definizione della vista materializzata.

Connettività privata multi-VPC di Amazon MSK

La connettività privata multi-VPC di Amazon MSK non è attualmente supportata per l'ingestione dello streaming Redshift. In alternativa, puoi utilizzare il peering VPC per connettere VPC o AWS Transit Gatewayper connettere VPC e reti locali tramite un hub centrale. Entrambi possono consentire a Redshift di comunicare con un cluster Amazon MSK o con Amazon MSK Serverless in un altro VPC.