Logo Zephyrnet

Sblocca insight su Amazon RDS per dati MySQL con l'integrazione zero ETL in Amazon Redshift | Servizi Web di Amazon

Data:

Amazon Relational Database Service (Amazon RDS) per MySQL integrazione zero-ETL con Amazon RedShift Prima ha annunciato in anteprima su AWS re:Invent 2023 per Amazon RDS per MySQL versione 8.0.28 o successiva. In questo post forniamo una guida passo passo su come iniziare con l'analisi operativa quasi in tempo reale utilizzando questa funzionalità. Questo post è la continuazione della serie zero-ETL iniziata con Guida introduttiva per l'analisi operativa in tempo quasi reale utilizzando l'integrazione zero-ETL di Amazon Aurora con Amazon Redshift.

Le sfide

I clienti di tutti i settori oggi cercano di utilizzare i dati per ottenere un vantaggio competitivo e aumentare le entrate e il coinvolgimento dei clienti implementando casi d'uso di analisi quasi in tempo reale come strategie di personalizzazione, rilevamento di frodi, monitoraggio dell'inventario e molto altro. Esistono due approcci generali per analizzare i dati operativi per questi casi d'uso:

  • Analizzare i dati sul posto nel database operativo (come repliche di lettura, query federate e acceleratori di analisi)
  • Sposta i dati in un datastore ottimizzato per l'esecuzione di query specifiche per casi d'uso come un data warehouse

L'integrazione zero-ETL si concentra sulla semplificazione di quest'ultimo approccio.

Il processo di estrazione, trasformazione e caricamento (ETL) è stato un modello comune per lo spostamento dei dati da un database operativo a un data warehouse di analisi. ELT è il luogo in cui i dati estratti vengono prima caricati così come sono nella destinazione e poi trasformati. Le condotte ETL ed ELT possono essere costose da costruire e complesse da gestire. Con più punti di contatto, errori intermittenti nelle pipeline ETL ed ELT possono portare a lunghi ritardi, lasciando le applicazioni di data warehouse con dati obsoleti o mancanti, con conseguente perdita di opportunità di business.

In alternativa, le soluzioni che analizzano i dati sul posto possono funzionare benissimo per accelerare le query su un singolo database, ma tali soluzioni non sono in grado di aggregare dati da più database operativi per i clienti che necessitano di eseguire analisi unificate.

Zero ETL

A differenza dei sistemi tradizionali in cui i dati sono archiviati in un unico database e l'utente deve trovare un compromesso tra analisi unificata e prestazioni, i data engineer possono ora replicare i dati da più database RDS per MySQL in un unico data warehouse Redshift per ricavare informazioni olistiche su tutti i fronti. molte applicazioni o partizioni. Gli aggiornamenti nei database transazionali vengono propagati automaticamente e continuamente ad Amazon Redshift in modo che i data engineer dispongano delle informazioni più recenti quasi in tempo reale. Non c'è alcuna infrastruttura da gestire e l'integrazione può aumentare o diminuire automaticamente in base al volume dei dati.

In AWS, abbiamo fatto progressi costanti per portare il nostro visione a zero ETL alla vita. Le seguenti origini sono attualmente supportate per le integrazioni zero-ETL:

Quando crei un'integrazione ETL zero per Amazon Redshift, continui a pagare per il database di origine sottostante e per l'utilizzo del database Redshift di destinazione. Fare riferimento a Costi di integrazione Zero-ETL (Anteprima) per ulteriori dettagli.

Con l'integrazione zero ETL con Amazon Redshift, l'integrazione replica i dati dal database di origine nel data warehouse di destinazione. I dati diventano disponibili in Amazon Redshift in pochi secondi, consentendoti di utilizzare le funzionalità di analisi di Amazon Redshift e funzionalità come la condivisione dei dati, l'ottimizzazione autonoma del carico di lavoro, il dimensionamento della concorrenza, l'apprendimento automatico e molto altro. Puoi continuare con l'elaborazione delle transazioni su Amazon RDS o Amazon Aurora utilizzando contemporaneamente Amazon Redshift per carichi di lavoro di analisi come reporting e dashboard.

Il diagramma seguente illustra questa architettura.

Diagramma dell'architettura AWS che mostra un esempio di architettura zero-ETL

Panoramica della soluzione

Consideriamo TICCHETTO, un sito web immaginario in cui gli utenti acquistano e vendono biglietti online per eventi sportivi, spettacoli e concerti. I dati transazionali di questo sito Web vengono caricati in un database Amazon RDS per MySQL 8.0.28 (o versione successiva). Gli analisti aziendali dell'azienda desiderano generare parametri per identificare il movimento dei biglietti nel tempo, le percentuali di successo per i venditori e gli eventi, i luoghi e le stagioni più venduti. Vorrebbero ottenere questi parametri quasi in tempo reale utilizzando un'integrazione zero-ETL.

L'integrazione viene configurata tra Amazon RDS for MySQL (origine) e Amazon Redshift (destinazione). I dati transazionali dall'origine vengono aggiornati quasi in tempo reale sulla destinazione, che elabora le query analitiche.

Puoi utilizzare l'opzione serverless o un cluster RA3 crittografato per Amazon Redshift. Per questo post utilizziamo un database RDS con provisioning e un data warehouse con provisioning Redshift.

Il diagramma seguente illustra l'architettura di alto livello.

Architettura zero-ETL di alto livello per il caso d'uso dei dati TICKIT

Di seguito sono riportati i passaggi necessari per impostare l'integrazione zero-ETL. Questi passaggi possono essere eseguiti automaticamente dalla procedura guidata zero-ETL, ma sarà necessario un riavvio se la procedura guidata modifica l'impostazione per Amazon RDS o Amazon Redshift. Puoi eseguire questi passaggi manualmente, se non già configurati, ed eseguire i riavvii a tuo piacimento. Per le guide introduttive complete, fare riferimento a Utilizzo delle integrazioni zero-ETL di Amazon RDS con Amazon Redshift (anteprima) ed Lavorare con integrazioni zero-ETL.

  1. Configura l'origine RDS per MySQL con un gruppo di parametri DB personalizzato.
  2. Configura il cluster Redshift per abilitare gli identificatori con distinzione tra maiuscole e minuscole.
  3. Configura le autorizzazioni richieste.
  4. Crea l'integrazione zero-ETL.
  5. Crea un database dall'integrazione in Amazon Redshift.

Configura l'origine RDS for MySQL con un gruppo di parametri DB personalizzato

Per creare un database RDS per MySQL, completare i seguenti passaggi:

  1. Nella console Amazon RDS, crea un gruppo di parametri DB chiamato zero-etl-custom-pg.

L'integrazione Zero-ETL funziona utilizzando log binari (binlog) generati dal database MySQL. Per abilitare i binlog su Amazon RDS for MySQL, è necessario abilitare un set specifico di parametri.

  1. Impostare le seguenti impostazioni dei parametri del cluster binlog:
    • binlog_format = ROW
    • binlog_row_image = FULL
    • binlog_checksum = NONE

Inoltre, assicurati che binlog_row_value_options il parametro non è impostato su PARTIAL_JSON. Per impostazione predefinita, questo parametro non è impostato.

  1. Scegli Database nel riquadro di navigazione, quindi scegli Crea database.
  2. Nel Versione del motorescegli MySQL 8.0.28 (o più alto).

Selezionato MySQL Community edition Engine versione 8.0.36

  1. Nel Modelli, selezionare Produzione.
  2. Nel Disponibilità e durabilità, selezionare uno Istanza database multi-AZ or Istanza database singola (I cluster DB Multi-AZ non sono supportati al momento della stesura di questo documento).
  3. Nel Identificatore dell'istanza database, accedere zero-etl-source-rms.

Modello di produzione selezionato, istanza database Multi-AZ e identificatore di istanza database zero-etl-source-rms

  1. Sotto Configurazione dell'istanza, selezionare Classi ottimizzate per la memoria e scegli l'istanza db.r6g.large, che dovrebbe essere sufficiente per il caso d'uso TICKIT.

Selezionato db.r6g.large per la classe di istanza database in Configurazione istanza

  1. Sotto Configurazione aggiuntiva, Per Gruppo di parametri del cluster di database, scegli il gruppo di parametri che hai creato in precedenza (zero-etl-custom-pg).

Gruppo di parametri DB selezionato zero-etl-custom-pg in Configurazione aggiuntiva

  1. Scegli Crea database.

In un paio di minuti, dovrebbe avviare un database RDS per MySQL come fonte per l'integrazione zero-ETL.

Lo stato dell'istanza RDS viene visualizzato come Disponibile

Configura la destinazione Redshift

Dopo aver creato il cluster DB di origine, devi creare e configurare un data warehouse di destinazione in Amazon Redshift. Il data warehouse deve soddisfare i seguenti requisiti:

  • Utilizzando un tipo di nodo RA3 (ra3.16xlarge, ra3.4xlarge, o ra3.xlplus) o puoi Amazon Redshift senza server
  • Crittografato (se si utilizza un cluster con provisioning)

Per il nostro caso d'uso, crea un cluster Redshift completando i seguenti passaggi:

  1. Sulla console Amazon Redshift, scegli Configurazioni e quindi scegliere Gestione del carico di lavoro.
  2. Nella sezione del gruppo di parametri, scegli Creare.
  3. Crea un nuovo gruppo di parametri denominato zero-etl-rms.
  4. Scegli Modifica parametri e modificare il valore di enable_case_sensitive_identifier a True.
  5. Scegli Risparmi.

È inoltre possibile utilizzare il Interfaccia della riga di comando di AWS (AWS CLI). gruppo di lavoro di aggiornamento per Redshift Serverless:

aws redshift-serverless update-workgroup --workgroup-name <your-workgroup-name> --config-parameters parameterKey=enable_case_sensitive_identifier,parameterValue=true

Configurazione del gruppo di parametri del cluster

  1. Scegli Dashboard dei cluster con provisioning.

Nella parte superiore della finestra della console, vedrai a Prova le nuove funzionalità di Amazon Redshift in anteprima banner.

  1. Scegli Crea cluster di anteprima.

Crea cluster di anteprima

  1. Nel Anteprima traccia, ha scelto preview_2023.
  2. Nel Tipo di nodo, scegli uno dei tipi di nodo supportati (per questo post utilizziamo ra3.xlplus).

Tipo di nodo ra3.xlplus selezionato per il cluster di anteprima

  1. Sotto Ulteriori configurazioni, espandi Configurazioni database.
  2. Nel Gruppi di parametriscegli zero-etl-rms.
  3. Nel crittografia, selezionare Utilizza AWS Key Management Service.

Configurazione del database che mostra i gruppi di parametri e la crittografia

  1. Scegli Crea cluster.

Il cluster dovrebbe diventare Disponibile in pochi minuti.

Lo stato del cluster viene visualizzato come Disponibile

  1. Passare allo spazio dei nomi zero-etl-target-rs-ns e scegliere il Politica delle risorse scheda.
  2. Scegli Aggiungi entità autorizzate.
  3. Inserisci l'Amazon Resource Name (ARN) dell'utente o del ruolo AWS oppure l'ID dell'account AWS (principali IAM) a cui è consentito creare integrazioni.

Un ID account viene archiviato come ARN con l'utente root.

Aggiungi entità autorizzate nella scheda Policy risorse cluster

  1. Nel Fonti di integrazione autorizzate sezione, scegliere Aggiungi origine di integrazione autorizzata per aggiungere l'ARN dell'istanza database RDS for MySQL che è l'origine dati per l'integrazione zero-ETL.

Puoi trovare questo valore accedendo alla console Amazon RDS e accedendo al file Configurazione scheda del zero-etl-source-rms Istanza database.

Aggiungi l'origine di integrazione autorizzata alla scheda Configurazione dell'istanza database zero-etl-source-rms

La policy delle risorse dovrebbe essere simile alla schermata seguente.

Configurazione della politica delle risorse completata

Configura le autorizzazioni richieste

Per creare un'integrazione zero-ETL, il tuo utente o ruolo deve avere un allegato politica basata sull'identità con l'appropriato Gestione dell'identità e dell'accesso di AWS (IAM) autorizzazioni. Il proprietario di un account AWS può farlo configurare le autorizzazioni richieste per utenti o ruoli che possono creare integrazioni con ETL zero. La policy di esempio consente all'entità associata di eseguire le seguenti azioni:

  • Crea integrazioni zero-ETL per l'istanza database RDS for MySQL di origine.
  • Visualizza ed elimina tutte le integrazioni zero-ETL.
  • Crea integrazioni in entrata nel data warehouse di destinazione. Questa autorizzazione non è richiesta se lo stesso account possiede il data warehouse Redshift e questo account è un'entità autorizzata per quel data warehouse. Tieni inoltre presente che Amazon Redshift ha un formato ARN diverso per i cluster con provisioning e serverless:
    • Fornito - arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid
    • serverless - arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

Completare i seguenti passaggi per configurare le autorizzazioni:

  1. Sulla console IAM, scegli Termini e Condizioni nel pannello di navigazione.
  2. Scegli Crea politica.
  3. Crea una nuova politica chiamata rds-integrations utilizzando il seguente JSON (sostituisci region ed account-id con i tuoi valori effettivi):
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "rds:CreateIntegration"
        ],
        "Resource": [
            "arn:aws:rds:{region}:{account-id}:db:source-instancename",
            "arn:aws:rds:{region}:{account-id}:integration:*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "rds:DescribeIntegration"
        ],
        "Resource": ["*"]
    },
    {
        "Effect": "Allow",
        "Action": [
            "rds:DeleteIntegration"
        ],
        "Resource": [
            "arn:aws:rds:{region}:{account-id}:integration:*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "redshift:CreateInboundIntegration"
        ],
        "Resource": [
            "arn:aws:redshift:{region}:{account-id}:cluster:namespace-uuid"
        ]
    }]
}
  1. Collega la policy che hai creato alle tue autorizzazioni utente o ruolo IAM.

Crea l'integrazione zero-ETL

Per creare l'integrazione zero-ETL, completare i seguenti passaggi:

  1. Nella console Amazon RDS, scegli Integrazioni Zero-ETL nel pannello di navigazione.
  2. Scegli Crea un'integrazione zero-ETL.

Crea un'integrazione zero-ETL sulla console Amazon RDS

  1. Nel Identificatore di integrazione, inserire ad esempio un nome zero-etl-demo.

Inserisci l'identificatore di integrazione

  1. Nel Database di originescegli Sfoglia i database RDS e scegli il cluster di origine zero-etl-source-rms.
  2. Scegli Avanti.

Sfoglia i database RDS per la fonte zero-ETL

  1. Sotto Target, Per Data warehouse di Amazon Redshiftscegli Sfoglia i data warehouse di Redshift e scegli il data warehouse Redshift (zero-etl-target-rs).
  2. Scegli Avanti.

Sfoglia i data warehouse Redshift per l'integrazione zero-ETL

  1. Aggiungi tag e crittografia, se applicabile.
  2. Scegli Avanti.
  3. Verifica il nome dell'integrazione, l'origine, la destinazione e altre impostazioni.
  4. Scegli Crea un'integrazione zero-ETL.

Creare il passaggio 4 dell'integrazione zero-ETL

Puoi scegliere l'integrazione per visualizzarne i dettagli e monitorarne l'avanzamento. Ci sono voluti circa 30 minuti perché lo stato cambiasse Creazione a Attivo.

Dettagli di integrazione Zero-ETL

Il tempo varierà a seconda della dimensione del set di dati nell'origine.

Crea un database dall'integrazione in Amazon Redshift

Per creare il tuo database dall'integrazione zero-ETL, completa i seguenti passaggi:

  1. Sulla console Amazon Redshift, scegli Cluster nel pannello di navigazione.
  2. Aprire il zero-etl-target-rs grappolo.
  3. Scegli Interroga i dati per aprire l'editor di query v2.

Eseguire query sui dati tramite l'editor di query v2

  1. Connettiti al data warehouse Redshift scegliendo Risparmi.

Connettiti al data warehouse Redshift

  1. Ottieni il file integration_id dal svv_integration tabella di sistema:

select integration_id from svv_integration; -- copy this result, use in the next sql

Richiesta dell'identificatore di integrazione

  1. Usa il integration_id dal passaggio precedente per creare un nuovo database dall'integrazione:

CREATE DATABASE zetl_source FROM INTEGRATION '<result from above>';

Crea database dall'integrazione

L'integrazione è ora completa e un'intera istantanea dell'origine rifletterà com'è nella destinazione. Le modifiche in corso verranno sincronizzate quasi in tempo reale.

Analizzare i dati transazionali quasi in tempo reale

Ora possiamo eseguire analisi sui dati operativi di TICKIT.

Popolare i dati TICKIT di origine

Per popolare i dati di origine, completare i seguenti passaggi:

  1. Copiare i file di dati di input CSV in una directory locale. Quello che segue è un comando di esempio:

aws s3 cp 's3://redshift-blogs/zero-etl-integration/data/tickit' . --recursive

  1. Connettiti al tuo cluster RDS for MySQL e crea un database o uno schema per il modello dati TICKIT, verifica che le tabelle in quello schema abbiano una chiave primaria e avvia il processo di caricamento:

mysql -h <rds_db_instance_endpoint> -u admin -p password --local-infile=1

Connettiti al tuo cluster RDS per MySQL e crea un database o uno schema per il modello dati TICKIT

  1. Utilizza il seguente comandi CREA TABELLA.
  2. Caricare i dati dai file locali utilizzando il comando LOAD DATA.

Quanto segue è un esempio. Tieni presente che il file CSV di input è suddiviso in più file. Questo comando deve essere eseguito per ogni file se si desidera caricare tutti i dati. A scopo dimostrativo, dovrebbe funzionare anche un caricamento parziale dei dati.

Crea una tabella utenti per la demo

Analizza i dati TICKIT di origine nella destinazione

Nella console Amazon Redshift, apri l'editor di query v2 utilizzando il database creato come parte della configurazione di integrazione. Utilizza il codice seguente per convalidare il seed o l'attività CDC:

SELECT * FROM SYS_INTEGRATION_ACTIVITY ORDER BY last_commit_timestamp DESC;

Query per convalidare il seed o l'attività CDC

Ora puoi applicare la logica aziendale per le trasformazioni direttamente sui dati che sono stati replicati nel data warehouse. Puoi anche utilizzare tecniche di ottimizzazione delle prestazioni come la creazione di una vista materializzata Redshift che unisca le tabelle replicate e altre tabelle locali per migliorare le prestazioni delle query per le tue query analitiche.

Controllo

Puoi eseguire query sulle seguenti visualizzazioni di sistema e tabelle in Amazon Redshift per ottenere informazioni sulle integrazioni zero ETL con Amazon Redshift:

Per visualizzare le metriche relative all'integrazione pubblicate in Amazon Cloud Watch, apri la console Amazon Redshift. Scegliere Integrazioni Zero-ETL nel riquadro di navigazione e scegli l'integrazione per visualizzare le metriche delle attività.

Metriche delle attività di integrazione Zero-ETL

I parametri disponibili sulla console Amazon Redshift sono parametri di integrazione e statistiche di tabella, con le statistiche di tabella che forniscono dettagli di ciascuna tabella replicata da Amazon RDS per MySQL ad Amazon Redshift.

Metriche di integrazione e statistiche delle tabelle

Le metriche di integrazione contengono il conteggio dei successi e degli errori di replica delle tabelle e i dettagli sui ritardi.

Metriche di integrazione che mostrano il conteggio dei successi e degli errori di replica delle tabelle e i dettagli dei ritardi. Metriche di integrazione che mostrano il conteggio dei successi e degli errori di replica delle tabelle e i dettagli dei ritardi. Metriche di integrazione che mostrano il conteggio dei successi e degli errori di replica delle tabelle e i dettagli dei ritardi.

Risincronizzazione manuale

L'integrazione zero-ETL avvierà automaticamente una risincronizzazione se lo stato di sincronizzazione di una tabella viene visualizzato come non riuscito o se è necessaria una risincronizzazione. Ma nel caso in cui la risincronizzazione automatica fallisca, puoi avviare una risincronizzazione con granularità a livello di tabella:

ALTER DATABASE zetl_source INTEGRATION REFRESH TABLES tbl1, tbl2;

Una tabella può entrare in uno stato non riuscito per diversi motivi:

  • La chiave primaria è stata rimossa dalla tabella. In questi casi, è necessario aggiungere nuovamente la chiave primaria ed eseguire il comando ALTER menzionato in precedenza.
  • Durante la replica viene rilevato un valore non valido oppure viene aggiunta una nuova colonna alla tabella con un tipo di dati non supportato. In questi casi, è necessario rimuovere la colonna con il tipo di dati non supportato ed eseguire il comando ALTER menzionato in precedenza.
  • Un errore interno, in rari casi, può causare un errore nella tabella. Il comando ALTER dovrebbe risolverlo.

ripulire

Quando elimini un'integrazione zero-ETL, i dati transazionali non vengono eliminati dai database RDS di origine o Redshift di destinazione, ma Amazon RDS non invia nuove modifiche a Amazon Redshift.

Per eliminare un'integrazione zero-ETL, completa i seguenti passaggi:

  1. Nella console Amazon RDS, scegli Integrazioni Zero-ETL nel pannello di navigazione.
  2. Selezionare l'integrazione zero-ETL che si desidera eliminare e scegliere Elimina.
  3. Per confermare l'eliminazione, scegli Elimina.

eliminare un'integrazione zero-ETL

Conclusione

In questo post ti abbiamo mostrato come configurare un'integrazione zero ETL da Amazon RDS for MySQL ad Amazon Redshift. Ciò riduce al minimo la necessità di mantenere pipeline di dati complesse e consente analisi quasi in tempo reale sui dati transazionali e operativi.

Per ulteriori informazioni sull'integrazione zero-ETL di Amazon RDS con Amazon Redshift, fare riferimento a Utilizzo delle integrazioni zero-ETL di Amazon RDS con Amazon Redshift (anteprima).


 Informazioni sugli autori

Gentile Oke è un architetto senior di soluzioni specializzate in Redshift che ha lavorato presso Amazon Web Services per tre anni. È titolare della certificazione SA Associate, Security Specialty e Analytics Speciality con certificazione AWS, con sede nel Queens, New York.

Aditya Samant è un veterano del settore dei database relazionali con oltre 2 decenni di esperienza di lavoro con database commerciali e open source. Attualmente lavora presso Amazon Web Services come Principal Database Specialist Solutions Architect. Nel suo ruolo, trascorre il tempo lavorando con i clienti progettando architetture native del cloud scalabili, sicure e robuste. Aditya lavora a stretto contatto con i team di assistenza e collabora alla progettazione e alla fornitura delle nuove funzionalità per i database gestiti di Amazon.

spot_img

L'ultima intelligenza

spot_img