Inserimento in streaming su una vista materializzata - 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à.

Inserimento in streaming su una vista materializzata

Questo argomento descrive come utilizzare le viste materializzate per un accesso rapido ai dati in streaming.

L'ingestione di streaming consente l'inserimento di dati a bassa latenza e alta velocità da Amazon Kinesis Data Streams o Amazon Managed Streaming for Apache Kafka verso un database con provisioning di Amazon Redshift o Amazon Redshift Serverless. I dati arrivano in una vista materializzata di Redshift configurata per lo scopo. Ciò si traduce in un accesso rapido ai dati esterni. L'ingestione dello streaming riduce i tempi di accesso ai dati e riduce i costi di archiviazione. Puoi configurarlo per il tuo cluster Amazon Redshift o per il tuo gruppo di lavoro Serverless Amazon Redshift, utilizzando una piccola raccolta di comandi SQL. Dopo la configurazione, ogni aggiornamento della vista materializzata può importare centinaia di megabyte di dati al secondo.

In che modo i dati fluiscono da un servizio di streaming a Redshift

Aiuta a capire come funziona l'ingestione dello streaming e gli oggetti del database utilizzati nel processo. I dati fluiscono direttamente da un provider di flussi di dati a un cluster con provisioning di Amazon Redshift o a un gruppo di lavoro Serverless Amazon Redshift. Non esiste un'area di atterraggio temporanea, come un bucket Amazon S3. Il cluster o il gruppo di lavoro fornito è il consumatore di streaming. Nel database Redshift, i dati letti dallo stream vengono visualizzati in una vista materializzata. I dati vengono elaborati non appena arrivano. Ad esempio, i valori JSON possono essere utilizzati e mappati alle colonne di dati di una vista materializzata, utilizzando SQL. Quando la vista materializzata viene aggiornata, Redshift utilizza i dati dai data shard Kinesis allocati o dalle partizioni Kafka fino a quando la vista non viene aggiornata con lo stream.

I casi d'uso per l'ingestione dello streaming di Amazon Redshift riguardano dati generati continuamente e devono essere elaborati entro un breve periodo, o latenza, dalla loro origine. Questa è comunemente chiamata analisi quasi in tempo reale. Le fonti possono includere dispositivi IT, dispositivi di telemetria di sistema e dati clickstream provenienti da un sito Web o un'applicazione molto trafficati.

Le migliori pratiche di analisi dei dati per migliorare le prestazioni

Quando configuri l'ingestione dello streaming, sono disponibili opzioni per analizzare i dati in entrata. Le pratiche possono includere l'esecuzione della logica aziendale o la formattazione all'arrivo dei dati. Consigliamo le seguenti best practice per evitare errori o perdite di dati. Queste derivano da test interni e aiutano i clienti a risolvere i problemi di configurazione e analisi.

  • Estrazione di valori dai dati in streaming: se utilizzi la funzione JSON_EXTRACT_PATH_TEXT nella definizione della vista materializzata per analizzare o distruggere lo streaming JSON, 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, vengono eseguiti la conversione dei tipi di dati, il filtraggio e i calcoli della logica aziendale. Ciò significa, ad esempio, che se si estraggono 10 colonne dai dati JSON, ogni record JSON viene analizzato 10 volte, il che include una 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 SUPER dei dati JSON. Per ulteriori informazioni, consulta Interrogazione di dati semistrutturati.

    Inoltre, tieni presente 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 su più viste materializzate: non è consigliabile creare più viste materializzate per importare dati da un singolo flusso o argomento. 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 inseriscono gli stessi dati più volte. Quando configuri l'acquisizione dello streaming, ti consigliamo di creare una vista materializzata per ogni stream o argomento.

    Se il tuo caso d'uso richiede l'inserimento di 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'analisi usando near-real-time Amazon Redshift Streaming Ingestion with Amazon MSK, prima di farlo.

Comportamento e tipi di dati durante l'inserimento dello streaming

La tabella seguente descrive i dettagli del comportamento tecnico e i limiti di dimensione per vari tipi di dati. Ti consigliamo di conoscerli bene prima di configurare una vista materializzata per l'ingestione dello streaming.

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 incrementali e su una vista materializzata JOINs

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, non JOINs sono attualmente supportate nelle viste materializzate create su uno stream 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

VARBYTEnon supporta la decompressione. Pertanto, non è possibile eseguire query sui record contenenti dati compressi in Redshift. Decomprimi i dati prima di aggiungerli allo stream Kinesis o all'argomento Amazon MSK.

Dimensione massima dei record

La dimensione massima di ogni record che Amazon Redshift può importare da Kinesis o Amazon MSK è di 16.777.216 byte (16 MiB), la dimensione massima supportata dal tipo di dati VARBYTE in Amazon Redshift. Per impostazione predefinita, lo streaming di viste materializzate di Amazon Redshift create su un flusso di dati Kinesis o su un argomento Amazon MSK imposta la dimensione della colonna di dati rispettivamente su 1.048.576 byte (1 MiB) e 16.777.216 byte (16 MiB).

Nota

1 MiB è la dimensione massima attuale di qualsiasi record che può essere inserito in un flusso di dati Kinesis. Per ulteriori informazioni sui limiti di dimensione di Kinesis, consulta Quote e limiti nella Amazon Kinesis Data Streams Developer Guide.

Record che generano errori

In ogni caso in cui un record non può essere importato su Redshift perché la dimensione dei dati supera il limite massimo, quel record viene ignorato. 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. Verifica 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 connetterti VPCs o AWS Transit Gatewayconnettere VPCs 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.

Aggiornamento automatico, utilizzo e attivazione

Le interrogazioni 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.

Inserimento di streaming e Amazon Redshift Serverless

Le istruzioni di configurazione e configurazione che si applicano all'inserimento di streaming di Amazon Redshift su un cluster fornito si applicano anche all'ingestione di streaming su Amazon Redshift Serverless. È importante specificare il livello necessario per RPUs supportare l'ingestione dello streaming con aggiornamento automatico e altri carichi di lavoro. Per ulteriori informazioni consulta Fatturazione per Amazon Redshift Serverless.

Nodi Amazon Redshift in una zona di disponibilità diversa rispetto al cluster Amazon MSK

Quando configuri lo streaming ingestion, Amazon Redshift tenta di connettersi a un cluster Amazon MSK nella stessa zona di disponibilità, se il rack awareness è abilitato per Amazon MSK. Se tutti i nodi si trovano in zone di disponibilità diverse rispetto al cluster Amazon Redshift, è possibile incorrere in costi di trasferimento dei dati tra 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.

Aggiorna la posizione di partenza

Dopo aver creato una vista materializzata, il suo aggiornamento iniziale inizia dal TRIM_HORIZON flusso Kinesis o dall'offset 0 di un argomento Amazon MSK.

Formati di dati

I formati di dati supportati sono limitati a quelli da cui è possibile convertireVARBYTE. Per ulteriori informazioni, consulta Tipo VARBYTE e Operatori VARBYTE.

Aggiungere record a una tabella

È possibile eseguire ALTER TABLE APPEND l'operazione 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

È possibile rimuovere i record da una vista materializzata utilizzata per l'acquisizione di streaming, utilizzando quanto segue:

  • TRUNCATE— Questa operazione elimina tutte le righe da una vista materializzata configurata per l'ingestione dello streaming. Non esegue una scansione della tabella. Per ulteriori informazioni, consulta TRUNCATE.

  • DELETE— Ciò elimina tutte le righe da una vista materializzata configurata per l'ingestione dello streaming. Per ulteriori informazioni, consulta DELETE.