Aggiunta di dati a un cluster di database Aurora di origine ed esecuzione di query al suo interno - Amazon Aurora

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.

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 DATABASE my_db; USE my_db; CREATE TABLE books_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 INTO books_table VALUES (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 -h mycluster.cluster-123456789012.us-east-2.rds.amazonaws.com -p 5432 -U username -d named_db; named_db=> CREATE TABLE books_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 INTO books_table VALUES (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
  1. Vai alla console Amazon Redshift e scegli Editor di query v2 nel riquadro di navigazione a sinistra.

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

  3. 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 * from my_db."books_table";
    Esegui un’istruzione SELECT nell’editor di query. Il risultato è una singola riga di dati di esempio che è stata aggiunta al database Amazon RDS.
    • my_db è il nome dello schema del database Aurora. Questa opzione è necessaria solo per i database MySQL.

    • books_table è il nome della tabella Aurora.

Puoi anche eseguire query sui dati utilizzando il client della riga di comando. Ad esempio:

destination_database=# select * from my_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
  • Valori NaN non supportati

  • La precisione e la scala devono essere definite in modo esplicito e non devono essere superiori a 38 (precisione) e 37 (scala)

  • Scala negativa non supportata

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)
  • Valori Infinity e -Infinity non supportati

  • Valori maggiori di 9999-12-31 non supportati

  • Valori B.C. non supportati

timestamp [(p)] with time zone TIMESTAMPTZ Data e ora (con fuso orario)
  • Valori Infinity e -Infinity non supportati

  • Valori maggiori di 9999-12-31 non supportati

  • Valori B.C. non supportati

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.