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
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-existsflag, 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:DbConnectAdminodsql:DbConnectsul 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.
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 \ --endpointcluster-id.dsql.region.on.aws \ --source-uridata.csv\ --tablemy_table
Esempio Caricamento di dati da Amazon S3
Questo esempio carica un file Parquet da un bucket Amazon S3:
aurora-dsql-loader load \ --endpointcluster-id.dsql.region.on.aws \ --source-uri s3://my-bucket/data.parquet\ --tablemy_table
Esempio Creazione automatica di tabelle
Questo esempio crea automaticamente una nuova tabella in base allo schema dei dati:
aurora-dsql-loader load \ --endpointcluster-id.dsql.region.on.aws \ --source-uridata.csv\ --tablemy_table\ --if-not-exists
Esempio Convalida prima del caricamento
Questo esempio convalida la configurazione senza caricare effettivamente i dati:
aurora-dsql-loader load \ --endpointcluster-id.dsql.region.on.aws \ --source-uridata.csv\ --tablemy_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 \ --endpointcluster-id.dsql.region.on.aws \ --source-uridata.csv\ --tablemy_table\ --resume-job-idjob-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) odo-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-runprima 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:DbConnectdsql: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
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:
-
Esporta i tuoi dati da PostgreSQL in formato CSV o Parquet. Puoi usare il comando
COPYPostgreSQL per esportare ogni tabella:COPYmy_tableTO '/path/to/my_table.csv' WITH (FORMAT csv, HEADER true); -
Crea la tabella di destinazione in Aurora DSQL. Puoi creare lo schema manualmente o utilizzare il
--if-not-existsflag del loader per dedurre lo schema dai tuoi dati. -
Carica i dati esportati utilizzando Aurora DSQL Loader:
aurora-dsql-loader load \ --endpointcluster-id.dsql.region.on.aws \ --source-uri/path/to/my_table.csv\ --tablemy_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:
-
Esporta i tuoi dati da MySQL in formato CSV
SELECT INTO OUTFILEutilizzando o uno strumento mysqldump come l'opzione:--tabSELECT * FROMmy_tableINTO OUTFILE '/path/to/my_table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; -
Crea la tabella di destinazione in Aurora DSQL con i tipi di dati appropriati compatibili con PostgreSQL.
-
Carica i dati esportati utilizzando Aurora DSQL Loader:
aurora-dsql-loader load \ --endpointcluster-id.dsql.region.on.aws \ --source-uri/path/to/my_table.csv\ --tablemy_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 \ --endpointcluster-id.dsql.region.on.aws \ --source-uri s3://my-bucket/path/to/data.parquet\ --tablemy_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
\copymy_tableFROM '/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
INSERTdichiarazione 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
-
Aurora DSQL Loader
attivo: codice sorgente GitHub, documentazione e tracciamento dei problemi -
Generazione di un token di autenticazione in Amazon Aurora DSQL— Scopri i token di autenticazione IAM per Aurora DSQL
-
Accesso ad Aurora DSQL con client compatibili con PostgreSQL— Connect ad Aurora DSQL utilizzando vari client e strumenti