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.
Tópicos
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 obter instruções sobre como criar um banco de dados de destino, consulte Criar um banco 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
; 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_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 -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_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
-
Navegue até o console do Amazon Redshift e escolha Editor de Consultas v2 no painel de navegação esquerdo.
-
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 obter instruções sobre como criar um banco de dados de destino, consulte Criar um banco de dados de destino no Amazon Redshift.
-
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
";-
é o nome do esquema do banco de dados Aurora. Essa opção só é necessária para bancos de dados do MySQL.my_db
-
é o nome da tabela do Aurora.books_table
-
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 | |
SMALLINT | SMALLINT | Número inteiro de dois bytes assinado | |
TINYINT | SMALLINT | Número inteiro de dois bytes assinado | |
MEDIUMINT | INTEGER | Número inteiro de quatro bytes assinado | |
BIGINT | BIGINT | Número inteiro de oito bytes assinado | |
INT UNSIGNED | BIGINT | Número inteiro de oito bytes assinado | |
TINYINT UNSIGNED | SMALLINT | Número inteiro de dois bytes assinado | |
MEDIUMINT UNSIGNED | INTEGER | Número inteiro de quatro bytes assinado | |
BIGINT UNSIGNED | DECIMAL(20,0) | Numérico exato com precisão selecionável | |
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 | |
FLOAT4/REAL UNSIGNED | REAL | Número de ponto flutuante de precisão simples | |
DOUBLE/REAL/FLOAT8 | DOUBLE PRECISION | Número de ponto flutuante de precisão dupla | |
DOUBLE/REAL/FLOAT8 UNSIGNED | DOUBLE PRECISION | Número de ponto flutuante de precisão dupla | |
BIT (n) | VARBYTE(8) | Valor binário de comprimento variável | |
BINARY(n) | VARBYTE(n) | Valor binário de comprimento variável | |
VARBINARY (n) | VARBYTE(n) | Valor binário de comprimento variável | |
CHAR(n) | VARCHAR(n) | Valor de string de comprimento variável | |
VARCHAR(n) | VARCHAR(n) | Valor de string de comprimento variável | |
TEXT | VARCHAR(65535) | Valor de string de comprimento variável de até 65535 bytes | |
TINYTEXT | VARCHAR(255) | Valor de string de comprimento variável de até 255 bytes | |
MEDIUMTEXT | VARCHAR(65535) | Valor de string de comprimento variável de até 65535 bytes | |
LONGTEXT | VARCHAR(65535) | Valor de string de comprimento variável de até 65535 bytes | |
ENUM | VARCHAR(1020) | Valor de string de comprimento variável de até 1020 bytes | |
SET | VARCHAR(1020) | Valor de string de comprimento variável de até 1020 bytes | |
DATA | DATA | Data de calendário (ano, mês, dia) | |
DATETIME | TIMESTAMP | Data e hora (sem fuso horário) | |
TIMESTAMP(p) | TIMESTAMP | Data e hora (sem fuso horário) | |
TIME | VARCHAR(18) | Valor de string de comprimento variável de até 18 bytes | |
YEAR | VARCHAR(4) | Valor de string de comprimento variável de até 4 bytes | |
JSON | SUPER | Dados ou documentos semiestruturados como valores |
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.
Importante
As integrações ETL zero com o recurso Amazon Redshift para o Aurora PostgreSQL estão na versão de pré-visualização. A documentação e o atributo estão sujeitos a alterações. É possível usar esse recurso somente em ambientes de teste, e não em ambientes de produção. Para conferir os termos e condições da pré-visualização, consulte Betas e pré-visualizações nos Termos de serviços da AWS
Tipo de dados do Aurora PostgreSQL | Tipo de dados do Amazon Redshift | Descrição | Limitações |
---|---|---|---|
bigint | BIGINT | Número inteiro de oito bytes assinado | |
bigserial | BIGINT | Número inteiro de oito bytes assinado | |
bit(n) | VARBYTE(n) | Valor binário de comprimento variável | |
bit variável (n) | VARBYTE(n) | Valor binário de comprimento variável | |
bit | VARBYTE(1024000) | Valor de string de tamanho variável de até 1.024.000 bytes | |
boolean | BOOLEAN | Booliano lógico (verdadeiro/falso) | |
bytea | VARBYTE(1024000) | Valor de string de tamanho variável de até 1.024.000 bytes | |
character(n) | CHAR(n) | String de caracteres com comprimento fixo | |
caractere variável(n) | VARCHAR(65535) | Valor de string de comprimento variável | |
date | DATA | Data de calendário (ano, mês, dia) |
|
double precision | DOUBLE PRECISION | Números de ponto flutuante de precisão dupla | Valores abaixo do normal não são aceitos. |
inteiro | INTEGER | Número inteiro de quatro bytes assinado | |
money | DECIMAL(20,3) | Valor da moeda | |
numeric(p,s) | DECIMAL (p,s) | Valor de string de comprimento variável |
|
real | REAL | Número de ponto flutuante de precisão simples | |
smallint | SMALLINT | Número inteiro de dois bytes assinado | |
smallserial | SMALLINT | Número inteiro de dois bytes assinado | |
serial | INTEGER | Número inteiro de quatro bytes assinado | |
text | VARCHAR(65535) | Valor de string de tamanho variável de até 65.535 bytes | |
hora [ (p) ] [ sem fuso horário ] | VARCHAR(19) | Valor de string de tamanho variável de até 19 bytes | Os valores Infinity e -Infinity não são aceitos. |
hora [(p)] com fuso horário | VARCHAR(22) | Valor de string de tamanho variável de até 22 bytes |
|
carimbo de data e hora [(p)] [sem fuso horário] | TIMESTAMP | Data e hora (sem fuso horário) |
|
carimbo de data e hora [(p)] com fuso horário | TIMESTAMPTZ | Data e hora (com fuso horário) |
|