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à.
Aggiunta di dati a un cluster di database Aurora di origine ed esecuzione di query al suo interno
Per completare la creazione di un’integrazione Zero-ETL che replichi i dati da Amazon Aurora in Amazon Redshift, devi creare un database nella destinazione.
Per le connessioni con Amazon Redshift, connettiti al cluster o al gruppo di lavoro Amazon Redshift e crea un database con un riferimento al tuo identificatore di integrazione. Quindi, puoi aggiungere dati al cluster di database Aurora e vederli replicati in Amazon Redshift o Amazon SageMaker.
Argomenti
Creazione di un database di destinazione
Prima di poter iniziare a replicare i dati in Amazon Redshift dopo aver creato un’integrazione, devi creare un database nel data warehouse di destinazione. Questo database deve includere un riferimento all’identificatore di integrazione. Puoi utilizzare la console Amazon Redshift o Editor di query v2 per creare il database.
Per istruzioni sulla creazione di un database di destinazione, consulta Creazione di un database di destinazione in Amazon Redshift.
Aggiunta di dati al cluster di database di origine
Dopo aver configurato l’integrazione, puoi popolare il cluster di database Aurora di origine con i dati che desideri replicare nel data warehouse.
Nota
Esistono differenze tra i tipi di dati in Amazon Aurora e il warehouse di analisi di destinazione. Per una tabella di mappature dei tipi di dati, consulta Differenze tra i tipi di dati tra i database Aurora e Amazon Redshift.
Innanzitutto, connettiti al cluster di database di origine utilizzando il client MySQL o PostgreSQL di tua scelta. Per istruzioni, consulta Connessione a un cluster database Amazon Aurora.
Quindi, crea una tabella e inserisci una riga di dati di esempio.
Importante
Assicurati che la tabella abbia una chiave primaria. Altrimenti, non può essere replicata nel data warehouse di destinazione.
Le utilità PostgreSQL pg_dump e pg_restore inizialmente creano tabelle senza una chiave primaria e poi l’aggiungono in seguito. Se utilizzi una di queste utilità, ti consigliamo di creare prima uno schema e poi caricare i dati in un comando separato.
MySQL
L’esempio seguente utilizza l’utilità MySQL Workbench
CREATE DATABASEmy_db; USEmy_db; CREATE TABLEbooks_table(ID int NOT NULL, Title VARCHAR(50) NOT NULL, Author VARCHAR(50) NOT NULL, Copyright INT NOT NULL, Genre VARCHAR(50) NOT NULL, PRIMARY KEY (ID)); INSERT INTObooks_tableVALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
PostgreSQL
L’esempio seguente utilizza il terminale interattivo PostgreSQL psql. Quando ti connetti al cluster, includi il database che hai specificato durante la creazione dell’integrazione.
psql -hmycluster.cluster-123456789012.us-east-2.rds.amazonaws.com -p 5432 -Uusername-dnamed_db; named_db=> CREATE TABLEbooks_table(ID int NOT NULL, Title VARCHAR(50) NOT NULL, Author VARCHAR(50) NOT NULL, Copyright INT NOT NULL, Genre VARCHAR(50) NOT NULL, PRIMARY KEY (ID)); named_db=> INSERT INTObooks_tableVALUES (1, 'The Shining', 'Stephen King', 1977, 'Supernatural fiction');
Interrogazione dei dati Aurora in Amazon Redshift
Dopo aver aggiunto i dati al cluster di database Aurora, questi vengono replicati nel database di destinazione e sono pronti per essere sottoposti a query.
Esecuzione di query sui dati replicati
-
Vai alla console Amazon Redshift e scegli Editor di query v2 nel riquadro di navigazione a sinistra.
-
Connettiti al cluster o al gruppo di lavoro e scegli il database di destinazione (creato dall'integrazione) dal menu a tendina (destination_database in questo esempio). Per istruzioni sulla creazione di un database di destinazione, consulta Creazione di un database di destinazione in Amazon Redshift.
-
Utilizzo di un’istruzione SELECT per eseguire query sui dati. In questo esempio, puoi eseguire il comando seguente per selezionare tutti i dati dalla tabella creata nel cluster di database Aurora di origine:
SELECT * frommy_db."books_table";
-
è il nome dello schema del database Aurora. Questa opzione è necessaria solo per i database MySQL.my_db -
è il nome della tabella Aurora.books_table
-
Puoi anche eseguire query sui dati utilizzando il client della riga di comando. Ad esempio:
destination_database=# select * frommy_db."books_table"; ID | Title | Author | Copyright | Genre | txn_seq | txn_id ----+–------------+---------------+-------------+------------------------+----------+--------+ 1 | The Shining | Stephen King | 1977 | Supernatural fiction | 2 | 12192
Nota
Per distinguere tra maiuscole e minuscole, usa le virgolette doppie (" ") per i nomi di schemi, tabelle e colonne. Per ulteriori informazioni, consulta enable_case_sensitive_identifier.
Differenze tra i tipi di dati tra i database Aurora e Amazon Redshift
Di seguito, le tabelle mostrano le mappature dei tipi di dati Aurora MySQL e Aurora PostgreSQL ai tipi di dati di destinazione corrispondenti. Amazon Aurora attualmente supporta solo questi tipi di dati per le integrazioni Zero-ETL.
Se una tabella nel cluster di database di origine include un tipo di dati non supportato, la tabella non viene sincronizzata e non è utilizzabile dalla destinazione. Lo streaming dall'origine alla destinazione va avanti, ma la tabella con il tipo di dati non supportato non è disponibile. Per correggere la tabella e renderla disponibile nella destinazione, devi annullare manualmente la modifica iniziale e aggiornare l’integrazione eseguendo ALTER DATABASE...INTEGRATION
REFRESH.
Nota
Non puoi aggiornare le integrazioni Zero-ETL con Amazon SageMaker Lakehouse. Piuttosto, elimina e prova a creare nuovamente l’integrazione.
Aurora MySQL
| Tipo di dati Aurora MySQL | Tipo di dati di destinazione | Descrizione | Limitazioni |
|---|---|---|---|
| INT | INTEGER | Intero a quattro byte firmato | Nessuna |
| SMALLINT | SMALLINT | Intero a due byte firmato | Nessuno |
| TINYINT | SMALLINT | Intero a due byte firmato | Nessuno |
| MEDIUMINT | INTEGER | Intero a quattro byte firmato | Nessuno |
| BIGINT | BIGINT | Intero a otto byte firmato | Nessuno |
| INT UNSIGNED | BIGINT | Intero a otto byte firmato | Nessuno |
| TINYINT UNSIGNED | SMALLINT | Intero a due byte firmato | Nessuno |
| MEDIUMINT UNSIGNED | INTEGER | Intero a quattro byte firmato | Nessuno |
| BIGINT UNSIGNED | DECIMAL(20,0) | Numerico esatto di precisione selezionabile | Nessuno |
| DECIMAL(p,s) = NUMERIC(p,s) | DECIMAL(p,s) | Numerico esatto di precisione selezionabile |
Precisione superiore a 38 e scala superiore a 37 non supportate |
| DECIMAL(p,s) UNSIGNED = NUMERIC(p,s) UNSIGNED | DECIMAL(p,s) | Numerico esatto di precisione selezionabile |
Precisione superiore a 38 e scala superiore a 37 non supportate |
| FLOAT4/REAL | REAL | Numero in virgola mobile a precisione singola | Nessuno |
| FLOAT4/REAL UNSIGNED | REAL | Numero in virgola mobile a precisione singola | Nessuno |
| DOUBLE/REAL/FLOAT8 | DOUBLE PRECISION | Numero in virgola mobile a precisione doppia | Nessuno |
| DOUBLE/REAL/FLOAT8 UNSIGNED | DOUBLE PRECISION | Numero in virgola mobile a precisione doppia | Nessuno |
| BIT(n) | VARBYTE(8) | Valore binario a lunghezza variabile | Nessuno |
| BINARY(n) | VARBYTE(n) | Valore binario a lunghezza variabile | Nessuno |
| VARBINARY(n) | VARBYTE(n) | Valore binario a lunghezza variabile | Nessuno |
| CHAR(n) | VARCHAR(n) | Valore di stringa di lunghezza variabile | Nessuno |
| VARCHAR(n) | VARCHAR(n) | Valore di stringa di lunghezza variabile | Nessuno |
| TEXT | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| TINYTEXT | VARCHAR(255) | Valore di stringa di lunghezza variabile fino a 255 caratteri | Nessuno |
| MEDIUMTEXT | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| LONGTEXT | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| ENUM | VARCHAR(1020) | Valore di stringa di lunghezza variabile fino a 1.020 caratteri | Nessuno |
| SET | VARCHAR(1020) | Valore di stringa di lunghezza variabile fino a 1.020 caratteri | Nessuno |
| DATE | DATE | Data di calendario (anno, mese, giorno) | Nessuno |
| DATETIME | TIMESTAMP | Data e ora (senza fuso orario) | Nessuno |
| TIMESTAMP(p) | TIMESTAMP | Data e ora (senza fuso orario) | Nessuno |
| TIME | VARCHAR(18) | Valore di stringa di lunghezza variabile fino a 18 caratteri | Nessuno |
| ANNO | VARCHAR(4) | Valore di stringa di lunghezza variabile fino a 4 caratteri | Nessuno |
| JSON | SUPER | Dati o documenti semistrutturati come valori | Nessuno |
Best practice di Aurora PostgreSQL
Le integrazioni Zero-ETL per Aurora PostgreSQL non supportano tipi di dati personalizzati né tipi di dati creati da estensioni.
| Tipo di dati Aurora PostgreSQL | Tipo di dati di Amazon Redshift | Descrizione | Limitazioni |
|---|---|---|---|
| array | SUPER | Dati o documenti semistrutturati come valori | Nessuno |
| bigint | BIGINT | Intero a otto byte firmato | Nessuno |
| bigserial | BIGINT | Intero a otto byte firmato | Nessuno |
| bit varying(n) | VARBYTE(n) | Valore binario di lunghezza variabile fino a 16.777.216 byte | Nessuno |
| bit(n) | VARBYTE(n) | Valore binario di lunghezza variabile fino a 16.777.216 byte | Nessuno |
| bit, bit varying | VARBYTE(16777216) | Valore binario di lunghezza variabile fino a 16.777.216 byte | Nessuno |
| booleano | BOOLEAN | Booleani logici (true/false) | Nessuno |
| bytea | VARBYTE(16777216) | Valore binario di lunghezza variabile fino a 16.777.216 byte | Nessuno |
| char(n) | CHAR(n) | Valore di stringa di caratteri a lunghezza fissa fino a 65.535 byte | Nessuno |
| char varying(n) | VARCHAR(65535) | Valore di stringa di caratteri a lunghezza variabile fino a 65.535 caratteri | Nessuno |
| cid | BIGINT |
Intero a otto byte firmato |
Nessuno |
| cidr |
VARCHAR(19) |
Valore di stringa di lunghezza variabile fino a 19 caratteri |
Nessuno |
| date | DATE | Data di calendario (anno, mese, giorno) |
I valori superiori a 294.276 A.D. non sono supportati |
| double precision | DOUBLE PRECISION | Numeri in virgola mobile a precisione doppia | Valori subnormali non completamente supportati |
|
gtsvector |
VARCHAR(65535) |
Valore di stringa di lunghezza variabile fino a 65.535 caratteri |
Nessuno |
| inet |
VARCHAR(19) |
Valore di stringa di lunghezza variabile fino a 19 caratteri |
Nessuno |
| integer | INTEGER | Intero a quattro byte firmato | Nessuno |
|
int2vector |
SUPER | Dati o documenti semistrutturati come valori. | Nessuno |
| intervallo | INTERVAL | Durata del tempo | Sono supportati solo i tipi INTERVAL che specificano un qualificatore da anno a mese o da giorno a secondo. |
| json | SUPER | Dati o documenti semistrutturati come valori | Nessuno |
| jsonb | SUPER | Dati o documenti semistrutturati come valori | Nessuno |
| jsonpath | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
|
macaddr |
VARCHAR(17) | Valore di stringa di lunghezza variabile fino a 17 caratteri | Nessuno |
|
macaddr8 |
VARCHAR(23) | Valore di stringa di lunghezza variabile fino a 23 caratteri | Nessuno |
| money | DECIMAL(20,3) | Importi | Nessuno |
| nome | VARCHAR(64) | Valore di stringa di lunghezza variabile fino a 64 caratteri | Nessuno |
| numeric(p,s) | DECIMAL(p,s) | Valore di precisione fisso definito dall’utente |
|
| oid | BIGINT | Intero a otto byte firmato | Nessuno |
| oidvector | SUPER | Dati o documenti semistrutturati come valori. | Nessuno |
| pg_brin_bloom_summary | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| pg_dependencies | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| pg_lsn | VARCHAR(17) | Valore di stringa di lunghezza variabile fino a 17 caratteri | Nessuno |
| pg_mcv_list | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| pg_ndistinct | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| pg_node_tree | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| pg_snapshot | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| real | REAL | Numero in virgola mobile a precisione singola | Valori subnormali non completamente supportati |
| refcursor | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| smallint | SMALLINT | Intero a due byte firmato | Nessuno |
| smallserial | SMALLINT | Intero a due byte firmato | Nessuno |
| seriale | INTEGER | Intero a quattro byte firmato | Nessuno |
| text | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| tid | VARCHAR(23) | Valore di stringa di lunghezza variabile fino a 23 caratteri | Nessuno |
| time [(p)] without time zone | VARCHAR(19) | Valore di stringa di lunghezza variabile fino a 19 caratteri | Valori Infinity e -Infinity non supportati |
| time [(p)] with time zone | VARCHAR(22) | Valore di stringa di lunghezza variabile fino a 22 caratteri | Valori Infinity e -Infinity non supportati |
| timestamp [(p)] without time zone | TIMESTAMP | Data e ora (senza fuso orario) |
|
| timestamp [(p)] with time zone | TIMESTAMPTZ | Data e ora (con fuso orario) |
|
| tsquery | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| tsvector | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| txid_snapshot | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
| uuid | VARCHAR(36) | Stringa di 36 caratteri di lunghezza variabile | Nessuno |
| xid | BIGINT | Intero a otto byte firmato | Nessuno |
| xid8 | DECIMAL(20, 0) | Decimale a precisione fissa | Nessuno |
| xml | VARCHAR(65535) | Valore di stringa di lunghezza variabile fino a 65.535 caratteri | Nessuno |
Operazioni DDL per Aurora PostgreSQL
Amazon Redshift è derivato da PostgreSQL, quindi condivide diverse funzionalità con Aurora PostgreSQL a causa dell’architettura comune di PostgreSQL. Le integrazioni Zero-ETL sfruttano queste somiglianze per semplificare la replica dei dati da Aurora PostgreSQL ad Amazon Redshift, la mappatura di database per nome e l’utilizzo della struttura di tabella, schema e database condivisa.
Considera i seguenti punti quando gestisci le integrazioni Zero-ETL di Aurora PostgreSQL:
-
L’isolamento è gestito a livello di database.
-
La replica avviene a livello di database.
-
I database Aurora PostgreSQL sono mappati ai database Amazon Redshift per nome, con i dati che fluiscono verso il corrispondente database Redshift rinominato se l’originale viene rinominato.
Nonostante le loro somiglianze, Amazon Redshift e Aurora PostgreSQL presentano differenze importanti. Le seguenti sezioni descrivono le risposte del sistema Amazon Redshift per le operazioni DDL comuni.
Operazioni del database
La tabella seguente mostra le risposte del sistema per le operazioni DDL del database.
| Operazioni DDL | Risposta del sistema Redshift |
|---|---|
CREATE DATABASE |
Nessuna operazione |
DROP DATABASE |
Amazon Redshift elimina tutti i dati nel database Redshift di destinazione. |
RENAME DATABASE |
Amazon Redshift elimina tutti i dati nel database di destinazione originale e risincronizza i dati nel nuovo database di destinazione. Se il nuovo database non esiste, devi crearlo manualmente. Per istruzioni, consulta Creazione di database di destinazione in Amazon Redshift. |
Operazioni dello schema
La tabella seguente mostra le risposte del sistema per le operazioni DDL dello schema.
| Operazioni DDL | Risposta del sistema Redshift |
|---|---|
CREATE SCHEMA |
Nessuna operazione |
DROP SCHEMA |
Amazon Redshift elimina lo schema originale. |
RENAME SCHEMA |
Amazon Redshift elimina lo schema originale, quindi risincronizza i dati nel nuovo schema. |
Operazioni sulle tabelle
La tabella seguente mostra le risposte del sistema per le operazioni DDL della tabella.
| Operazioni DDL | Risposta del sistema Redshift |
|---|---|
CREATE TABLE |
Amazon Redshift crea la tabella. Alcune operazioni impediscono la creazione della tabella, ad esempio la creazione di una tabella senza una chiave primaria o l’esecuzione del partizionamento dichiarativo. Per ulteriori informazioni, consulta Limitazioni e Risoluzione dei problemi delle integrazioni Zero-ETL di Aurora. |
DROP TABLE |
Amazon Redshift elimina la tabella. |
TRUNCATE TABLE |
Amazon Redshift tronca la tabella. |
ALTER TABLE
(RENAME...) |
Amazon Redshift rinomina la tabella o la colonna. |
ALTER TABLE (SET
SCHEMA) |
Amazon Redshift elimina la tabella nello schema originale e risincronizza la tabella nel nuovo schema. |
ALTER TABLE (ADD PRIMARY
KEY) |
Amazon Redshift aggiunge una chiave primaria e risincronizza la tabella. |
ALTER TABLE (ADD
COLUMN) |
Amazon Redshift aggiunge una colonna alla tabella. |
ALTER TABLE (DROP
COLUMN) |
Amazon Redshift elimina la colonna se non è una colonna di chiave primaria. Altrimenti, risincronizza la tabella. |
ALTER TABLE (SET
LOGGED/UNLOGGED) |
Se modifichi la tabella in registrata, Amazon Redshift risincronizza la tabella. Se modifichi la tabella in non registrata, Amazon Redshift elimina la tabella. |