Adicionar dados a um cluster de banco de dados do Aurora de origem e consultá-los no Amazon Redshift - Amazon Aurora

Adicionar dados a um cluster de banco de dados do Aurora de origem e consultá-los no Amazon Redshift

Para criar uma integração ETL zero que replica dados do Amazon Aurora no Amazon Redshift, você deve criar um banco de dados de destino no Amazon Redshift.

Primeiro, conecte-se ao cluster ou grupo de trabalho do Amazon Redshift e crie um banco de dados com uma referência ao identificador de integração. Depois, é possível adicionar dados ao cluster de banco de dados do Aurora de origem e vê-los replicados no Amazon Redshift.

Criação de um banco de dados de destino no Amazon Redshift

Antes de começar a replicar dados no Amazon Redshift, após você criar uma integração, você deve criar um banco de dados de destino no data warehouse de destino. Esse banco de dados de destino deve incluir uma referência ao identificador de integração. Você pode usar o console do Amazon Redshift ou o Editor de Consultas v2 para criar o banco de dados.

Para conferir instruções sobre como criar um banco de dados de destino, consulte Criar bancos de dados de destino no Amazon Redshift.

Adicionar dados ao cluster de banco de dados de origem

Depois de configurar a integração, será possível adicionar alguns dados ao cluster de banco de dados do Aurora que você deseja replicar no data warehouse do Amazon Redshift.

nota

Há diferenças entre os tipos de dados no Amazon Aurora e Amazon Redshift. Para obter uma tabela de mapeamentos de tipos de dados, consulte. Diferenças de tipos de dados entre os bancos de dados Aurora e Amazon Redshift

Primeiro, conecte-se ao cluster de banco de dados de origem usando o cliente do MySQL ou do PostgreSQL de sua escolha. Para obter instruções, consulte Como conectar-se a um cluster de bancos de dados Amazon Aurora.

Depois, crie uma tabela e insira uma linha de dados de exemplo.

Importante

Verifique se a tabela tem uma chave primária. Caso contrário, ela não poderá ser replicada no data warehouse de destino.

Os utilitários pg_dump e pg_restore do PostgreSQL inicialmente criam tabelas sem uma chave primária e depois as adicionam. Se você estiver usando um desses utilitários, recomendamos primeiro criar um esquema e depois carregar os dados em um comando separado.

MySQL

O exemplo a seguir usa o utilitário 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

O exemplo a seguir usa o terminal interativo do PostgreSQL psql. Ao se conectar ao cluster, inclua o banco de dados nomeado que você especificou ao criar a integração.

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');

Consultar os dados do Aurora no Amazon Redshift

Depois de adicionar dados ao cluster de banco de dados do Aurora, eles são replicados no Amazon Redshift e ficam prontos para serem consultados.

Como consultar os dados replicados
  1. Navegue até o console do Amazon Redshift e escolha Editor de Consultas v2 no painel de navegação esquerdo.

  2. Conecte-se ao cluster ou grupo de trabalho e escolha o banco de dados de destino (criado na integração) no menu suspenso (destination_database neste exemplo). Para conferir instruções sobre como criar um banco de dados de destino, consulte Criar bancos de dados de destino no Amazon Redshift.

  3. Use uma declaração SELECT para consultar dados. Neste exemplo, é possível executar o comando a seguir para selecionar todos os dados da tabela que você criou no cluster de banco de dados do Aurora de origem:

    SELECT * from my_db."books_table";
    Execute uma declaração SELECT no editor de consultas do Redshift. O resultado é uma única linha de dados de amostra adicionada ao banco de dados do RDS.
    • my_db é o nome do esquema do banco de dados Aurora. Essa opção só é necessária para bancos de dados do MySQL.

    • books_table é o nome da tabela do Aurora.

Também é possível consultar os dados usando o cliente de linha de comandos. Por exemplo:

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

Para diferenciar letras maiúsculas de minúsculas, use aspas duplas (“ ”) para nomes de esquemas, tabelas e colunas. Para obter mais informações, consulte enable_case_sensitive_identifier.

Diferenças de tipos de dados entre os bancos de dados Aurora e Amazon Redshift

As tabelas a seguir mostram os mapeamentos de um tipo de dados do Aurora MySQL ou do Aurora PostgreSQL para um tipo de dados correspondente do Amazon Redshift. No momento, o Amazon Aurora é compatível somente com esses tipos de dados para integrações ETL zero.

Se uma tabela no cluster de banco de dados de origem incluir um tipo de dado incompatível, a tabela ficará fora de sincronia e não poderá ser consumida pelo destino do Amazon Redshift. O streaming da origem para o destino continuará, mas a tabela com o tipo de dados não compatível não estará disponível. Para corrigir a tabela e disponibilizá-la no Amazon Redshift, você deve reverter manualmente a alteração significativa e, em seguida, atualizar a integração executando ALTER DATABASE...INTEGRATION REFRESH.

Aurora MySQL

Tipo de dados do Aurora MySQL Tipo de dados do Amazon Redshift Descrição Limitações
INT INTEGER Número inteiro de quatro bytes assinado Nenhum
SMALLINT SMALLINT Número inteiro de dois bytes assinado Nenhum
TINYINT SMALLINT Número inteiro de dois bytes assinado Nenhum
MEDIUMINT INTEGER Número inteiro de quatro bytes assinado Nenhum
BIGINT BIGINT Número inteiro de oito bytes assinado Nenhum
INT UNSIGNED BIGINT Número inteiro de oito bytes assinado Nenhum
TINYINT UNSIGNED SMALLINT Número inteiro de dois bytes assinado Nenhum
MEDIUMINT UNSIGNED INTEGER Número inteiro de quatro bytes assinado Nenhum
BIGINT UNSIGNED DECIMAL(20,0) Numérico exato com precisão selecionável Nenhum
DECIMAL(p,s) = NUMERIC(p,s) DECIMAL (p,s) Numérico exato com precisão selecionável

Precisão maior que 38 e escala maior que 37 não são aceitas

DECIMAL(p,s) UNSIGNED = NUMERIC(p,s) UNSIGNED DECIMAL (p,s) Numérico exato com precisão selecionável

Precisão maior que 38 e escala maior que 37 não são aceitas

FLOAT4/REAL REAL Número de ponto flutuante de precisão simples Nenhum
FLOAT4/REAL UNSIGNED REAL Número de ponto flutuante de precisão simples Nenhum
DOUBLE/REAL/FLOAT8 DOUBLE PRECISION Número de ponto flutuante de precisão dupla Nenhum
DOUBLE/REAL/FLOAT8 UNSIGNED DOUBLE PRECISION Número de ponto flutuante de precisão dupla Nenhum
BIT (n) VARBYTE(8) Valor binário de comprimento variável Nenhum
BINARY(n) VARBYTE(n) Valor binário de comprimento variável Nenhum
VARBINARY (n) VARBYTE(n) Valor binário de comprimento variável Nenhum
CHAR(n) VARCHAR(n) Valor de string de comprimento variável Nenhum
VARCHAR(n) VARCHAR(n) Valor de string de comprimento variável Nenhum
TEXT VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
TINYTEXT VARCHAR(255) Valor de string de comprimento variável de até 255 caracteres Nenhum
MEDIUMTEXT VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
LONGTEXT VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
ENUM VARCHAR(1020) Valor de string de comprimento variável de até 1.020 caracteres Nenhum
SET VARCHAR(1020) Valor de string de comprimento variável de até 1.020 caracteres Nenhum
DATE DATE Data de calendário (ano, mês, dia) Nenhum
DATETIME TIMESTAMP Data e hora (sem fuso horário) Nenhum
TIMESTAMP(p) TIMESTAMP Data e hora (sem fuso horário) Nenhum
TIME VARCHAR(18) Valor de string de comprimento variável de até 18 caracteres Nenhum
YEAR VARCHAR(4) Valor de string de comprimento variável de até 4 caracteres Nenhum
JSON SUPER Dados ou documentos semiestruturados como valores Nenhum

Aurora PostgreSQL

As integrações ETL zero para o Aurora PostgreSQL não são compatíveis com tipos de dados personalizados nem tipos de dados criados por extensões.

Tipo de dados do Aurora PostgreSQL Tipo de dados do Amazon Redshift Descrição Limitações
array SUPER Dados ou documentos semiestruturados como valores Nenhum
bigint BIGINT Número inteiro de oito bytes assinado Nenhum
bigserial BIGINT Número inteiro de oito bytes assinado Nenhum
bit variável (n) VARBYTE(n) Valor de binário de tamanho variável de até 16.777.216 bytes Nenhum
bit(n) VARBYTE(n) Valor de binário de tamanho variável de até 16.777.216 bytes Nenhum
bit, bit varying VARBYTE(16777216) Valor de binário de tamanho variável de até 16.777.216 bytes Nenhum
boolean BOOLEAN Booliano lógico (verdadeiro/falso) Nenhum
bytea VARBYTE(16777216) Valor de binário de tamanho variável de até 16.777.216 bytes Nenhum
char(n) CHAR(n) Valor de string de caracteres de tamanho fixo de até 65.535 bytes Nenhum
char varying(n) VARCHAR(65535) Valor de string de caracteres de comprimento variável de até 65.535 caracteres Nenhum
cid BIGINT

Número inteiro de oito bytes assinado

Nenhum
cidr

VARCHAR(19)

Valor de string de comprimento variável de até 19 caracteres

date DATE Data de calendário (ano, mês, dia)

Valores maiores do que 294.276 d.C. não são aceitos.

double precision DOUBLE PRECISION Números de ponto flutuante de precisão dupla Valores abaixo do normal não são totalmente aceitos.

gtsvector

VARCHAR(65535)

Valor de string de comprimento variável de até 65.535 caracteres

Nenhum
inet

VARCHAR(19)

Valor de string de comprimento variável de até 19 caracteres

Nenhum
integer INTEGER Número inteiro de quatro bytes assinado Nenhum

int2vector

SUPER Dados ou documentos semiestruturados como valores. Nenhum
intervalo INTERVAL Duração Somente os tipos de INTERVAL que especificam um qualificador de ano a mês ou de dia a segundo são aceitos.
json SUPER Dados ou documentos semiestruturados como valores Nenhum
jsonb SUPER Dados ou documentos semiestruturados como valores Nenhum
jsonpath VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum

macaddr

VARCHAR(17) Valor de string de comprimento variável de até 17 caracteres Nenhum

macaddr8

VARCHAR(23) Valor de string de comprimento variável de até 23 caracteres Nenhum
money DECIMAL(20,3) Valor da moeda Nenhum
nome VARCHAR(64) Valor de string de comprimento variável de até 64 caracteres Nenhum
numeric(p,s) DECIMAL (p,s) Valor fixo de precisão definido pelo usuário
  • Valores NaN não são aceitos.

  • A precisão e a escala devem ser definidas explicitamente e não serem maiores que 38 (precisão) e 37 (escala)

  • Escala negativa não é aceita.

oid BIGINT Número inteiro de oito bytes assinado Nenhum
oidvector SUPER Dados ou documentos semiestruturados como valores. Nenhum
pg_brin_bloom_summary VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
pg_dependencies VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
pg_lsn VARCHAR(17) Valor de string de comprimento variável de até 17 caracteres Nenhum
pg_mcv_list VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
pg_ndistinct VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
pg_node_tree VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
pg_snapshot VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
real REAL Número de ponto flutuante de precisão simples Valores abaixo do normal não são totalmente aceitos.
refcursor VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
smallint SMALLINT Número inteiro de dois bytes assinado Nenhum
smallserial SMALLINT Número inteiro de dois bytes assinado Nenhum
serial INTEGER Número inteiro de quatro bytes assinado Nenhum
text VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
tid VARCHAR(23) Valor de string de comprimento variável de até 23 caracteres Nenhum
hora [(p)] sem fuso horário VARCHAR(19) Valor de string de comprimento variável de até 19 caracteres Os valores Infinity e -Infinity não são aceitos.
hora [(p)] com fuso horário VARCHAR(22) Valor de string de comprimento variável de até 22 caracteres Os valores Infinity e -Infinity não são aceitos.
carimbo de data/hora [(p)] sem fuso horário TIMESTAMP Data e hora (sem fuso horário)
  • Os valores Infinity e -Infinity não são aceitos.

  • Valores maiores do que 9999-12-31 não são aceitos.

  • Valores B.C. não são aceitos.

carimbo de data e hora [(p)] com fuso horário TIMESTAMPTZ Data e hora (com fuso horário)
  • Os valores Infinity e -Infinity não são aceitos.

  • Valores maiores do que 9999-12-31 não são aceitos.

  • Valores B.C. não são aceitos.

tsquery VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
tsvector VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
txid_snapshot VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum
uuid VARCHAR(36) String de 36 caracteres de comprimento variável Nenhum
xid BIGINT Número inteiro de oito bytes assinado Nenhum
xid8 DECIMAL(20, 0) Decimal de precisão fixa Nenhum
xml VARCHAR(65535) Valor de string de comprimento variável de até 65.535 caracteres Nenhum

Operações de DDL para Aurora PostgreSQL

O Amazon Redshift é derivado do PostgreSQL, portanto, ele compartilha vários recursos com o Aurora PostgreSQL devido à sua arquitetura comum do PostgreSQL. As integrações ETL zero utilizam essas semelhanças para simplificar a replicação de dados do Aurora PostgreSQL para o Amazon Redshift, associando bancos de dados por nome e utilizando o banco de dados compartilhado, o esquema e a estrutura de tabelas.

Pense nos seguintes pontos ao gerenciar integrações ETL zero do Aurora PostgreSQL:

  • O isolamento é gerenciado no nível do banco de dados.

  • A replicação ocorre no nível do banco de dados.

  • Os bancos de dados do Aurora PostgreSQL são mapeados aos bancos de dados do Amazon Redshift por nome, com os dados fluindo para o banco de dados do Redshift renomeado correspondente caso o original seja renomeado.

Apesar de suas semelhanças, o Amazon Redshift e o Aurora PostgreSQL têm diferenças importantes. As seções a seguir descrevem as respostas do sistema do Amazon Redshift para operações comuns de DDL.

Operações do banco de dados

A tabela a seguir mostra as respostas do sistema para operações de DDL do banco de dados.

Operação de DDL Resposta do sistema do Redshift
CREATE DATABASE Nenhuma operação
DROP DATABASE O Amazon Redshift descarta todos os dados no banco de dados de destino do Redshift.
RENAME DATABASE O Amazon Redshift descarta todos os dados no banco de dados de destino original e os ressincroniza no novo banco de dados de destino. Se o novo banco de dados não existir, você deverá criá-lo manualmente. Para conferir instruções, consulte Criar bancos de dados de destino no Amazon Redshift.

Operações de esquema

A tabela a seguir mostra as respostas do sistema para operações de DDL do esquema.

Operação de DDL Resposta do sistema do Redshift
CREATE SCHEMA Nenhuma operação
DROP SCHEMA O Amazon Redshift descarta o esquema original.
RENAME SCHEMA O Amazon Redshift descarta o esquema original e ressincroniza os dados no novo esquema.

Operações de tabela

A tabela a seguir mostra as respostas do sistema para operações de DDL da tabela.

Operação de DDL Resposta do sistema do Redshift
CREATE TABLE

O Amazon Redshift cria a tabela.

Algumas operações fazem com que a criação da tabela falhe, como criar uma tabela sem uma chave primária ou realizar o particionamento declarativo. Para ter mais informações, consulte Limitações do Aurora PostgreSQL e Solução de problemas em integrações ETL zero do Aurora com o Amazon Redshift.

DROP TABLE O Amazon Redshift descarta a tabela.
TRUNCATE TABLE O Amazon Redshift trunca a tabela.
ALTER TABLE (RENAME...) O Amazon Redshift renomeia a tabela ou a coluna.
ALTER TABLE (SET SCHEMA)

O Amazon Redshift descarta a tabela no esquema original e a ressincroniza no novo esquema.

ALTER TABLE (ADD PRIMARY KEY) O Amazon Redshift adiciona uma chave primária e ressincroniza a tabela.
ALTER TABLE (ADD COLUMN) O Amazon Redshift adiciona uma coluna à tabela.
ALTER TABLE (DROP COLUMN)

O Amazon Redshift descartará a coluna se ela não for uma coluna de chave primária. Caso contrário, ele ressincronizará a tabela.

ALTER TABLE (SET LOGGED/UNLOGGED) Se você alterar a tabela para ativar o registro em log, o Amazon Redshift a ressincronizará. Se você alterar a tabela para desativar o registro em log, o Amazon Redshift a descartará.