View a markdown version of this page

Caricamento dei dati in Aurora DSQL - Amazon Aurora DSQL

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à.

Caricamento dei dati in Aurora DSQL

Che tu stia migrando da un database esistente, importando file da Amazon Simple Storage Service o caricando dati dal tuo sistema locale, Aurora DSQL offre diversi approcci per inserire i tuoi dati. Questa sezione descrive gli strumenti e le tecniche consigliati per carichi di dati di tutte le dimensioni, da gigabyte a centinaia di terabyte.

Scelta di un approccio di caricamento

Aurora DSQL supporta i comandi standard di caricamento dei dati PostgreSQL, ma il caricamento efficiente dei dati su larga scala richiede la gestione della parallelizzazione, della gestione delle connessioni e del ripristino degli errori. La tabella seguente riassume le opzioni disponibili:

Approccio Ideale per Considerazioni
Aurora DSQL Loader - Utilità open source che semplifica la parallelizzazione degli inserti quando si utilizza Aurora DSQL La maggior parte degli scenari di caricamento dei dati, in particolare le migrazioni e le importazioni di massa Gestisce automaticamente la parallelizzazione, il pool di connessioni, la risoluzione dei conflitti e l'autenticazione IAM. Disponibile come codice sorgente o binario.
\copyPostgreSQL - Metacomando lato client psql Caricamenti semplici quando si è già connessi tramite psql Legge i file sul client e trasmette i dati tramite la connessione; gestisci tu stesso la parallelizzazione
INSERTtransazioni - Standard SQL DML Set di dati di piccole dimensioni o inserti basati su applicazioni L'approccio più semplice ma il più lento per dati di massa

Per la maggior parte delle attività di caricamento dei dati, utilizzate Aurora DSQL Loader. Gestisce la complessità operativa del caricamento dei dati in un database distribuito, inclusa l'esecuzione parallela su più connessioni e il nuovo tentativo automatico delle operazioni non riuscite.

Caricatore SQL Aurora

Aurora DSQL Loader è un'utilità a riga di comando open source progettata per caricare in modo efficiente i dati nei cluster Aurora DSQL. Gestisce il pool di connessioni, parallelizza il trasferimento dei dati tra più worker e gestisce automaticamente i conflitti e i nuovi tentativi.

Funzionalità principali

Aurora DSQL Loader offre le seguenti funzionalità:

Caricamento parallelo

I thread di lavoro configurabili consentono il caricamento simultaneo dei dati su più connessioni per migliorare le prestazioni.

Pooling di connessioni

Gestisce un pool di connessioni al cluster Aurora DSQL, gestendo automaticamente l'autenticazione IAM e il ciclo di vita della connessione.

Supporto per più formati di file

Supporta CSV (valori separati da virgole), TSV (valori separati da tabulazioni) e il formato colonnare Apache Parquet. Il loader rileva automaticamente il formato del file in base all'estensione URI di origine.

Inferenza automatica dello schema

Se utilizzato con il --if-not-exists flag, il loader può creare automaticamente tabelle con i tipi di colonna appropriati in base ai dati.

Gestione dei conflitti

Quando la tabella di destinazione ha vincoli unici, configura il modo in cui il loader gestisce i conflitti utilizzando l'--on-conflictopzione: salta i duplicati, altera i record o restituisci un errore.

Tolleranza ai guasti

I tentativi automatici e le funzionalità di ripresa dei lavori assicurano che i carichi interrotti possano continuare dal punto di arresto anziché riavviarsi completamente.

Sorgenti locali e S3

Carica i dati dai percorsi del file system locale o direttamente dai bucket Amazon S3 utilizzando S3. URIs

Prerequisiti

Prima di utilizzare Aurora DSQL Loader, assicuratevi di disporre di quanto segue:

  • Un cluster Aurora DSQL attivo con un endpoint valido.

  • AWS credenziali configurate tramite i ruoli AWS CLI (aws configure), AWS Single Sign-On (aws sso login) o IAM.

  • Autorizzazioni IAM: dsql:DbConnectAdmin o dsql:DbConnect sul tuo cluster Aurora DSQL.

  • Per le sorgenti S3, autorizzazioni appropriate per la lettura dal bucket dei sorgenti.

Installazione

Scarica l'ultima versione dalla pagina dei GitHub rilasci. Sono disponibili file binari precompilati per piattaforme comuni. Per istruzioni sulla creazione dal codice sorgente, consulta il repository Aurora DSQL Loader.

Esempi di utilizzo

Gli esempi seguenti illustrano casi d'uso comuni per Aurora DSQL Loader.

Esempio Caricamento di un file CSV locale

Questo esempio carica un file CSV dal file system locale in una tabella esistente:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table
Esempio Caricamento di dati da Amazon S3

Questo esempio carica un file Parquet da un bucket Amazon S3:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri s3://my-bucket/data.parquet \ --table my_table
Esempio Creazione automatica di tabelle

Questo esempio crea automaticamente una nuova tabella in base allo schema dei dati:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table \ --if-not-exists
Esempio Convalida prima del caricamento

Questo esempio convalida la configurazione senza caricare effettivamente i dati:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table \ --dry-run
Esempio Ripresa di un carico interrotto

Se un'operazione di caricamento viene interrotta, è possibile riprenderla utilizzando l'ID del lavoro dell'esecuzione precedente:

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri data.csv \ --table my_table \ --resume-job-id job-id \ --manifest-dir ./loader-state
Nota

Quando riprende, il loader salta la maggior parte del lavoro già completato, ma può riprovare alcuni record. Se la tabella di destinazione presenta vincoli unici, utilizzate l'--on-conflictopzione per gestire i duplicati, ad esempio per ignorarli o modificarli. DO NOTHING DO UPDATE

Opzioni della riga di comando

Aurora DSQL Loader supporta le seguenti opzioni della riga di comando:

--endpoint

(Obbligatorio) L'endpoint del cluster Aurora DSQL. Ad esempio: cluster-id.dsql.region.on.aws

--source-uri

(Obbligatorio) Il percorso del file di dati. Può essere un percorso di file locale o un URI S3 (ad esempio,s3://bucket-name/file.parquet).

--table

(Obbligatorio) Il nome della tabella di destinazione nel database Aurora DSQL.

--if-not-exists

(Facoltativo) Crea automaticamente la tabella di destinazione se non esiste. Il loader deduce lo schema dai dati.

--dry-run

(Facoltativo) Convalida la configurazione e i dati senza caricarli effettivamente nel database.

--resume-job-id

(Facoltativo) Riprendete un'operazione di caricamento precedentemente interrotta utilizzando l'ID del lavoro specificato.

--manifest-dir

(Facoltativo) Directory per la memorizzazione dello stato e dei manifesti del lavoro, utilizzata per la ripresa del lavoro.

--on-conflict

(Facoltativo) Specifica come gestire i conflitti quando si inseriscono righe che violano i vincoli univoci sulla tabella di destinazione. I valori validi sono error (restituisce un errore), do-nothing (salta le righe duplicate) o do-update (aggiorna le righe esistenti con nuovi valori).

Per un elenco completo delle opzioni e dei parametri di configurazione aggiuntivi, esegui:

aurora-dsql-loader load --help

Best practice

  • Usa dry-run per la convalida: verifica sempre la configurazione di carico --dry-run prima di caricare i dati nelle tabelle di produzione.

  • Definisci vincoli unici per la ripresa: se devi riprendere i carichi interrotti, definisci vincoli unici sulle tabelle di destinazione e utilizza l'opzione per gestire i record già caricati. --on-conflict

  • Usa Parquet per set di dati di grandi dimensioni: il formato colonnare di Parquet in genere offre una compressione migliore e un caricamento più rapido per set di dati di grandi dimensioni rispetto a CSV o TSV.

  • Conserva le directory del manifesto: conserva la directory manifest per i lavori di caricamento fino a quando non confermi che il caricamento è stato completato correttamente, abilitandone la ripresa se necessario.

  • Precrea tabelle quando possibile: definisci la tabella di destinazione con tipi di dati di colonna espliciti e chiavi primarie prima di caricare i dati. Gli schemi precreati consentono di controllare la precisione dei tipi e l'indicizzazione, il che in genere si traduce in prestazioni di query migliori rispetto agli schemi dedotti automaticamente.

Risoluzione dei problemi

Errori di autenticazione

Verifica che AWS le tue credenziali siano configurate correttamente e che la tua identità IAM disponga delle autorizzazioni o dei permessi richiesti sul cluster di destinazione. dsql:DbConnect dsql:DbConnectAdmin

Errori di accesso S3

Assicurati che la tua identità IAM disponga delle autorizzazioni di lettura S3 appropriate per il bucket e gli oggetti di origine.

Errori di inferenza dello schema

Durante l'utilizzo--if-not-exists, assicurati che il file di dati abbia tipi di colonne coerenti. I tipi misti in una colonna possono causare il fallimento dell'inferenza dello schema.

Errori chiave duplicati nel curriculum

Se riscontrate errori di chiave duplicati durante la ripresa di un caricamento, aggiungete dei vincoli univoci alla tabella di destinazione in modo che il loader possa utilizzarla per saltare i record già caricati. ON CONFLICT DO NOTHING

Per ulteriori informazioni sulla risoluzione dei problemi, consulta l'archivio Aurora DSQL Loader. GitHub

Percorsi di migrazione

Le sezioni seguenti descrivono come migrare i dati da sistemi di origine comuni ad Aurora DSQL.

Migrazione da PostgreSQL

Per migrare i dati da un database PostgreSQL esistente ad Aurora DSQL:

  1. Esporta i tuoi dati da PostgreSQL in formato CSV o Parquet. Puoi usare il comando COPY PostgreSQL per esportare ogni tabella:

    COPY my_table TO '/path/to/my_table.csv' WITH (FORMAT csv, HEADER true);
  2. Crea la tabella di destinazione in Aurora DSQL. Puoi creare lo schema manualmente o utilizzare il --if-not-exists flag del loader per dedurre lo schema dai tuoi dati.

  3. Carica i dati esportati utilizzando Aurora DSQL Loader:

    aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri /path/to/my_table.csv \ --table my_table
Suggerimento

Per migrazioni di grandi dimensioni, prendi in considerazione l'esportazione in formato Parquet per una migliore compressione e un caricamento più rapido. Strumenti come DuckDB possono convertire i file CSV in Parquet in modo efficiente.

Migrazione da MySQL

Per migrare i dati da MySQL ad Aurora DSQL:

  1. Esporta i tuoi dati da MySQL in formato CSV SELECT INTO OUTFILE utilizzando o uno strumento mysqldump come l'opzione: --tab

    SELECT * FROM my_table INTO OUTFILE '/path/to/my_table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
  2. Crea la tabella di destinazione in Aurora DSQL con i tipi di dati appropriati compatibili con PostgreSQL.

  3. Carica i dati esportati utilizzando Aurora DSQL Loader:

    aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri /path/to/my_table.csv \ --table my_table
Nota

MySQL e PostgreSQL hanno sistemi di tipi di dati diversi. Rivedi lo schema e modifica i tipi di dati secondo necessità durante la creazione di tabelle in Aurora DSQL.

Caricamento da Amazon S3

Se i tuoi dati sono già in Amazon S3, puoi caricarli direttamente senza scaricarli sul tuo sistema locale. Aurora DSQL Loader supporta S3 in modo nativo: URIs

aurora-dsql-loader load \ --endpoint cluster-id.dsql.region.on.aws \ --source-uri s3://my-bucket/path/to/data.parquet \ --table my_table

Assicurati che la tua identità IAM disponga dell's3:GetObjectautorizzazione sugli oggetti di origine.

Usare PostgreSQL\ copy

Se sei già connesso ad Aurora DSQL tramite una psql sessione che gestisce l'autenticazione IAM, puoi utilizzare il \copy meta-comando lato client per caricare i dati dal tuo file system locale. A differenza dell'COPYistruzione lato server, \copy legge il file sul computer client e trasmette i dati tramite la connessione esistente, quindi non è richiesto l'accesso ai file lato server. Questo approccio funziona bene per caricamenti semplici a thread singolo.

Esempio Caricamento di un file CSV con\ copy
\copy my_table FROM '/path/to/data.csv' WITH (FORMAT csv, HEADER true);

In caso di utilizzo \copy diretto, l'utente è responsabile di:

  • Gestione della parallelizzazione in caso di caricamento di più file o set di dati di grandi dimensioni

  • Gestione della gestione delle connessioni e aggiornamento dei token di autenticazione

  • Implementazione della logica dei tentativi per le operazioni non riuscite

Le migliori pratiche per le transazioni INSERT

Quando utilizzi INSERT istruzioni per caricare dati in Aurora DSQL, segui queste pratiche per migliorare la velocità effettiva e l'affidabilità:

  • Batch di righe in più righe INSERTs: raggruppa più righe in un'unica INSERT dichiarazione per ridurre i round trip. Ad esempio, INSERT INTO my_table VALUES (1, 'a'), (2, 'b'), (3, 'c') è più efficiente di tre istruzioni separate.

  • Utilizza query con parametri: utilizza istruzioni preparate con associazione di parametri anziché la concatenazione di stringhe. Ciò evita i rischi di SQL injection e consente al database di riutilizzare i piani di query.

  • Mantieni le transazioni ridotte: Aurora DSQL utilizza un controllo ottimistico della concorrenza, quindi le transazioni di grandi dimensioni che toccano molte righe hanno maggiori probabilità di incontrare conflitti. Punta a transazioni composte da poche centinaia di righe anziché da migliaia.

  • Implementa la logica dei tentativi: in un sistema distribuito sono previsti errori transitori come i conflitti OCC (Optimistic Concurrency Control). Implementa il backoff esponenziale con un nuovo tentativo per le transazioni non riuscite.

  • Parallelizzazione tra connessioni: apri più connessioni e distribuisci gli inserti su di esse. Ogni connessione può elaborare contemporaneamente un diverso sottoinsieme di dati.

Per la maggior parte dei casi d'uso, Aurora DSQL Loader offre un approccio più semplice e robusto al caricamento dei dati.

Risorse aggiuntive