Modelos do Amazon RDS para o Amazon Redshift - AWS Data Pipeline

Modelos do Amazon RDS para o Amazon Redshift

Estes dois modelos copiam tabelas MySQL do Amazon RDS para o Amazon Redshift usando um script de conversão, que cria uma tabela do Amazon Redshift usando o esquema da tabela de origem com as seguintes ressalvas:

  • Se uma chave de distribuição não for especificada, a primeira chave primária da tabela do Amazon RDS será definida como a chave de distribuição.

  • Você não pode ignorar uma coluna presente na tabela MySQL do Amazon RDS ao fazer uma cópia para o Amazon Redshift.

  • (Opcional) Você pode fornecer um MySQL do Amazon RDS para o mapeamento dos tipos de dados da coluna do Amazon Redshift como um dos parâmetros no modelo. Se isso for especificado, o script o usará para criar a tabela do Amazon Redshift.

Se o modo de inserção do Amazon Redshift de Overwrite_Existing estiver sendo usado:

  • Se uma chave de distribuição não for fornecida, será usada uma chave primária na tabela MySQL do Amazon RDS.

  • Se houver chaves primárias compostas na tabela, a primeira será usada como a chave de distribuição, se a chave de distribuição não for fornecida. Somente a primeira chave composta é definida como a chave primária na tabela do Amazon Redshift.

  • Se uma chave de distribuição não for fornecida e não houver chave primária na tabela MySQL do Amazon RDS, ocorrerá falha na operação de cópia.

Para obter mais informações sobre o Amazon Redshift, consulte os seguintes tópicos:

A seguinte tabela descreve como o script converte os tipos de dados:

Conversões de tipo de dados entre MySQL e Amazon Redshift
Tipo de dados MySQL Tipo de dados do Amazon Redshift Observações

TINYINT,

TINYINT (size)

SMALLINT

MySQL: de -128 a 127. O número máximo de dígitos pode ser especificado entre parênteses.

Amazon Redshift: INT2. Número inteiro de dois bytes assinado

TINYINT UNSIGNED,

TINYINT (size) UNSIGNED

SMALLINT

MySQL: de 0 a 255 UNSIGNED. O número máximo de dígitos pode ser especificado entre parênteses.

Amazon Redshift: INT2. Número inteiro de dois bytes assinado

SMALLINT,

SMALLINT(size)

SMALLINT

MySQL: de -32768 a 32767 normal. O número máximo de dígitos pode ser especificado entre parênteses.

Amazon Redshift: INT2. Número inteiro de dois bytes assinado

SMALLINT UNSIGNED,

SMALLINT(size) UNSIGNED,

INTEGER

MySQL: de 0 a 65535 UNSIGNED*. O número máximo de dígitos pode ser especificado entre parênteses

Amazon Redshift: INT4. Número inteiro de quatro bytes assinado

MEDIUMINT,

MEDIUMINT(size)

INTEGER

MySQL: de 388608 a 8388607. O número máximo de dígitos pode ser especificado entre parênteses

Amazon Redshift: INT4. Número inteiro de quatro bytes assinado

MEDIUMINT UNSIGNED,

MEDIUMINT(size)

UNSIGNED

INTEGER

MySQL: de 0 a 16777215. O número máximo de dígitos pode ser especificado entre parênteses

Amazon Redshift: INT4. Número inteiro de quatro bytes assinado

INT,

INT(size)

INTEGER

MySQL: de 147483648 a 2147483647

Amazon Redshift: INT4. Número inteiro de quatro bytes assinado

INT UNSIGNED,

INT(size) UNSIGNED

BIGINT

MySQL: de 0 a 4294967295

Amazon Redshift: INT8. Número inteiro de oito bytes assinado

BIGINT

BIGINT(size)

BIGINT

Amazon Redshift: INT8. Número inteiro de oito bytes assinado

BIGINT UNSIGNED

BIGINT(size) UNSIGNED

VARCHAR(20*4)

MySQL: de 0 a 18446744073709551615

Amazon Redshift: Sem equivalente nativo. Por isso, usando char array.

FLOAT

FLOAT(size,d)

FLOAT(size,d) UNSIGNED

REAL

O número máximo de dígitos pode ser especificado no parâmetro size. O número máximo de dígitos à direita da casa decimal é especificado no parâmetro d.

Amazon Redshift: FLOAT4

DOUBLE(size,d)

DOUBLE PRECISION

O número máximo de dígitos pode ser especificado no parâmetro size. O número máximo de dígitos à direita da casa decimal é especificado no parâmetro d.

Amazon Redshift: FLOAT8

DECIMAL(size,d)

DECIMAL(size,d)

Um DOUBLE armazenado como uma string, o que possibilita uma casa decimal fixa. O número máximo de dígitos pode ser especificado no parâmetro size. O número máximo de dígitos à direita da casa decimal é especificado no parâmetro d.

Amazon Redshift: sem equivalente nativo.

CHAR(size)

VARCHAR(size*4)

Mantém uma string de tamanho fixo, que pode conter letras, números e caracteres especiais. O tamanho fixo é especificado como o parâmetro entre parênteses. É possível armazenar até 255 caracteres.

Lado direito preenchido com espaços.

Amazon Redshift: o tipo de dados CHAR não dá suporte a caracteres multibyte, logo, VARCHAR é usado.

O número máximo de bytes por caractere é 4 de acordo com RFC3629, o que limita a tabela de caracteres U+10FFFF.

VARCHAR(size) VARCHAR(size*4)

É possível armazenar até 255 caracteres.

VARCHAR não dá suporte aos seguintes pontos de código UTF-8 inválidos: 0xD800 - 0xDFFF, (Sequências de bytes: ED A0 80 - ED BF BF), 0xFDD0 - 0xFDEF, 0xFFFE e 0xFFFF, (Sequências de bytes: EF B7 90 - EF B7 AF, EF BF BE, and EF BF BF)

TINYTEXT VARCHAR(255*4) Mantém uma string com um tamanho máximo de 255 caracteres
TEXT VARCHAR(máximo)

Mantém uma string com um tamanho máximo de 65.535 caracteres.

MEDIUMTEXT VARCHAR(máximo)

De 0 a 16.777.215 caracteres

LONGTEXT VARCHAR(máximo) De 0 a 4.294.967.295 caracteres

BOOLEAN

BOOL

TINYINT(1)

BOOLEAN

MySQL: esses tipos são sinônimos para TINYINT (1). Um valor zero é considerado falso. Valores diferente de zero são considerados verdadeiros.

BINARY[(M)] varchar(255)

M é de 0 a 255 bytes, FIXED

VARBINARY(M) VARCHAR(máximo)

0 a 65,535 bytes

TINYBLOB VARCHAR (255) 0 a 255 bytes
BLOB VARCHAR(máximo)

0 a 65,535 bytes

MEDIUMBLOB VARCHAR(máximo)

0 a 16,777,215 bytes

LONGBLOB VARCHAR(máximo)

0 a 4,294,967,295 bytes

ENUM VARCHAR(255*2) O limite não está no tamanho da string enum literal, e sim na definição de tabela para o número de valores enum.
SET VARCHAR(255*2) Como enum.
DATE DATE

(YYYY-MM-DD)

De "1000-01-01" a "9999-12-31"

TIME VARCHAR(10*4)

(hh:mm:ss)

De "-838:59:59" a "838:59:59"

DATETIME TIMESTAMP

(YYYY-MM-DD hh:mm:ss)

De 1000-01-01 00:00:00" a "9999-12-31 23:59:59"

TIMESTAMP TIMESTAMP

(YYYYMMDDhhmmss)

De 19700101000000 a 2037+

YEAR VARCHAR(4*4)

(YYYY)

1900 – 2155

Coluna SERIAL

Geração de ID/Este atributo não é necessário para um data warehouse OLAP após a cópia da coluna.

A palavra-chave SERIAL não é adicionada durante a conversão.

Na verdade, SERIAL é uma entidade chamada SEQUENCE. Ela existe de maneira independente no restante da tabela.

Coluna GENERATED BY DEFAULT

equivale a:

Nome CREATE SEQUENCE; tabela CREATE TABLE (coluna INTEGER NOT NULL DEFAULT nextval(name) );

Coluna BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE

Geração de ID/Este atributo não é necessário para um data warehouse OLAP após a cópia da coluna.

Dessa forma, a palavra-chave SERIAL não é adicionada durante a conversão.

Na verdade, SERIAL é uma entidade chamada SEQUENCE. Ela existe de maneira independente no restante da tabela.

Coluna GENERATED BY DEFAULT

equivale a:

Nome CREATE SEQUENCE; tabela CREATE TABLE (coluna INTEGER NOT NULL DEFAULT nextval(name) );

ZEROFILL A palavra-chave ZEROFILL não é adicionada durante a conversão.

INT UNSIGNED ZEROFILL NOT NULL

ZEROFILL preenche o valor exibido do campo com zeros até a exibição da largura especificada na definição da coluna. Os valores maiores que a largura de exibição não são truncados. O uso de ZEROFILL também implica UNSIGNED.