Utilizar o Amazon S3 como destino de dados do AWS Database Migration Service - AWS Database Migration Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Utilizar o Amazon S3 como destino de dados do AWS Database Migration Service

É possível migrar dados para o Amazon S3 utilizando o AWS DMS em qualquer uma das origens de bancos de dados compatíveis. Ao utilizar o Amazon S3 como destino em uma tarefa do AWS DMS, os dados da carga máxima e da captura de dados de alteração (CDC) são gravados no formato de valores separados por vírgulas (.csv) por padrão. Para obter mais opções de armazenamento compacto e de consultas mais rápidas, você também tem a opção de ter os dados gravados no formato do Apache Parquet (.parquet).

O AWS DMS nomeia os arquivos criados durante um carga máxima utilizando um contador hexadecimal incremental, por exemplo, LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A e assim por diante para arquivos .csv. O AWS DMS nomeia arquivos da CDC utilizando timestamps, por exemplo, 20141029-1134010000.csv. Para cada tabela de origem que contém registros, o AWS DMS cria uma pasta na pasta de destino especificada (se a tabela de destino não estiver vazia). O AWS DMS grava todos os arquivos da carga máxima e da CDC no bucket do Amazon S3 especificado. É possível controlar o tamanho dos arquivos criados pelo AWS DMS utilizando a configuração de endpoint MaxFileSize.

O parâmetro bucketFolder contém o local em que arquivos .csv ou .parquet são armazenados antes de serem carregados no bucket do S3. Com arquivos .csv, os dados de tabela são armazenados no seguinte formato no bucket do S3, mostrado com arquivos da carga máxima.

database_schema_name/table_name/LOAD00000001.csv database_schema_name/table_name/LOAD00000002.csv ... database_schema_name/table_name/LOAD00000009.csv database_schema_name/table_name/LOAD0000000A.csv database_schema_name/table_name/LOAD0000000B.csv ...database_schema_name/table_name/LOAD0000000F.csv database_schema_name/table_name/LOAD00000010.csv ...

É possível especificar o delimitador de coluna, o delimitador de linha e outros parâmetros utilizando os atributos de conexão adicionais. Para obter mais informações sobre os atributos de conexão extra, consulte Configurações de endpoint ao utilizar o Amazon S3 como destino para o AWS DMS, no final desta seção.

É possível especificar o proprietário do bucket e evitar o corte utilizando a configuração ExpectedBucketOwner do endpoint do Amazon S3, conforme mostrado a seguir. Ao fazer uma solicitação para testar uma conexão ou executar uma migração, o S3 verifica o ID da conta do proprietário do bucket em relação ao parâmetro especificado.

--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'

Ao utilizar o AWS DMS para replicar alterações de dados utilizando uma tarefa de CDC, a primeira coluna do arquivo de saída .csv ou .parquet indica como os dados da linha foram alterados para o seguinte arquivo .csv.

I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas

Para este exemplo, suponha que haja uma tabela EMPLOYEE no banco de dados de origem. O AWS DMS grava dados no arquivo .csv ou .parquet, em resposta aos seguintes eventos:

  • Um novo funcionário (Bob Smith, ID de funcionário 101) é contratado em 4 de junho de 2014 no escritório de Nova York. No arquivo .csv ou .parquet, o I na primeira coluna indica que uma nova linha foi INSERT (inserida) na tabela EMPLOYEE no banco de dados de origem.

  • Em 8 de outubro de 2015, Bob é transferido para o escritório de Los Angeles. No arquivo .csv ou .parquet, o U indica que a linha correspondente na tabela EMPLOYEE foi UPDATE (atualizada) para refletir o local do novo escritório de Bob. O restante da linha reflete a linha na tabela EMPLOYEE conforme ela aparece após UPDATE.

  • Em 13 de março de 2017, Bob é transferido novamente para o escritório de Dallas. No arquivo .csv ou .parquet, o U indica que essa linha foi UPDATE (atualizada) novamente. O restante da linha reflete a linha na tabela EMPLOYEE conforme ela aparece após UPDATE.

  • Depois de um tempo trabalhando em Dallas, Bob deixa a empresa. No arquivo .csv ou .parquet, o D indica que a linha foi DELETE (excluída) da tabela de origem. O restante da linha reflete como a linha na tabela EMPLOYEE aparecia antes de ser excluída.

Observe que, por padrão, para a CDC, o AWS DMS armazena as alterações de linha para cada tabela do banco de dados, independentemente da ordem da transação. Para armazenar as alterações de linha nos arquivos de CDC de acordo com a ordem da transação, utilize as configurações do endpoint do S3 para especificar isso e o caminho da pasta em que deseja que os arquivos de transações da CDC sejam armazenados no destino do S3. Para obter mais informações, consulte Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3..

Para controlar a frequência de gravações em um destino do Amazon S3 durante uma tarefa de replicação de dados, é possível configurar os atributos de conexão adicionais cdcMaxBatchInterval e cdcMinFileSize. Isso pode resultar em melhor desempenho ao analisar os dados sem operações adicionais de sobrecarga. Para obter mais informações, consulte Configurações de endpoint ao utilizar o Amazon S3 como destino para o AWS DMS.

Pré-requisitos da utilização do Amazon S3 como destino

Antes de utilizar o Amazon S3 como destino, verifique se o seguinte é verdadeiro:

  • O bucket do S3 que você está utilizando como destino está na mesma região da AWS que a instância de replicação do DMS que você está utilizando para migrar os dados.

  • A conta da AWS que você utiliza para a migração tem um perfil do IAM com acesso de gravação e exclusão no bucket do S3 que você está utilizando como destino.

  • Esse perfil tem acesso à marcação para que você possa marcar todos os objetos do S3 gravados no bucket de destino.

  • O perfil do IAM tem o DMS (dms.amazonaws.com) adicionado como Entidade confiável.

Para configurar esse acesso à conta, verifique se o perfil atribuído à conta de usuário utilizada para criar a tarefa de migração tem o seguinte conjunto de permissões.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::buckettest2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::buckettest2" ] } ] }

Para obter os pré-requisitos para utilizar a validação com o S3 como destino, consulte Pré-requisitos da validação do S3 de destino.

Limitações da utilização do Amazon S3 como destino

Aplicam-se as seguintes limitações ao utilizar o Amazon S3 como destino:

  • Não ative o versionamento para o S3. Se o versionamento do S3 for necessário, utilize políticas de ciclo de vida para excluir ativamente as versões antigas. Caso contrário, é possível encontrar falhas na conexão de teste de endpoint devido ao tempo limite de uma chamada list-object do S3. Para criar uma política de ciclo de vida para um bucket do S3, consulte Gerenciar o ciclo de vida do armazenamento. Para excluir a versão de um objeto do S3, consulte Excluir versões de objetos de um bucket com versionamento ativado.

  • Um bucket do S3 ativado para VPC (VPC do gateway) é compatível com as versões 3.4.7 e superiores.

  • Os seguintes comandos da linguagem de definição de dados (DDL) são compatíveis com a captura de dados de alteração (CDC): truncar tabela, descartar tabela, criar tabela, renomear tabela, adicionar coluna, descartar coluna, renomear coluna e alterar o tipo de dados de coluna. Observe que quando uma coluna é adicionada, descartada ou renomeada no banco de dados de origem, nenhuma instrução ALTER é registrada no bucket do S3 de destino e o AWS DMS não altera os registros criados anteriormente para corresponder à nova estrutura. Após a alteração, o AWS DMS cria todos os novos registros utilizando a nova estrutura da tabela.

    nota

    Uma operação de truncamento da DDL remove todos os arquivos e pastas de tabelas correspondentes em um bucket do S3. É possível utilizar as configurações de tarefas para desativar esse comportamento e configurar a forma como o DMS trata o comportamento da DDL durante a captura de dados de alteração (CDC). Para obter mais informações, consulte Configurações de tarefa para processamento de DDL de processamento de alterações.

  • O modo Full LOB não é compatível.

  • As alterações na estrutura da tabela de origem durante a carga máxima não são compatíveis. As alterações nos dados são compatíveis durante a carga máxima.

  • Várias tarefas que replicam dados da mesma tabela de origem para o mesmo bucket de endpoint do S3 de destino resultam em tarefas sendo gravadas no mesmo arquivo. Recomendamos que você especifique diferentes endpoints de destino (buckets) se sua fonte de dados estiver na mesma tabela.

  • BatchApply não é compatível com um endpoint do S3. A utilização da aplicação em lote (por exemplo, a configuração da tarefa de metadados de destino BatchApplyEnabled) para um destino do S3 pode resultar em perda de dados.

  • Não é possível utilizar DatePartitionEnabled ou addColumnName em conjunto com PreserveTransactions ou CdcPath.

  • AWS DMS não é compatível com a renomeação de várias tabelas de origem para a mesma pasta de destino utilizando regras de transformação.

  • Se houver gravação intensa na tabela de origem durante a fase de carregamento completo, o DMS poderá gravar registros duplicados no bucket do S3 ou nas alterações armazenadas em cache.

  • Se você configurar a tarefa com um TargetTablePrepMode definido como DO_NOTHING, o DMS poderá gravar registros duplicados no bucket do S3 se a tarefa for interrompida e retomada abruptamente durante a fase de carregamento completo.

  • Se você configurar o endpoint de destino com a configuração PreserveTransactions definida como true, o recarregamento de uma tabela não limpará os arquivos de CDC gerados anteriormente. Para obter mais informações, consulte Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3..

Para obter as limitações da utilização da validação com o S3 como destino, consulte Limitações da utilização da validação de destino do S3..

Segurança

Para utilizar o Amazon S3 como destino, a conta utilizada para a migração deve ter acesso de gravação e exclusão ao bucket do Amazon S3 utilizado como o destino. Especifique o nome de recurso da Amazon (ARN) de um perfil do IAM que tem as permissões necessárias para acessar o Amazon S3.

O AWS DMS é compatível com um conjunto de concessões predefinidas do Amazon S3, conhecidas como listas de controle de acesso (ACLs) pré-configuradas padrão. Cada ACL pré-configurada tem um conjunto de concessões e permissões que podem ser utilizadas para definir permissões para o bucket do Amazon S3. É possível especificar uma ACL pré-configurada utilizando cannedAclForObjects no atributo da string de conexão para o endpoint de destino do S3. Para obter mais informações sobre como utilizar o atributo de conexão adicional cannedAclForObjects, consulte Configurações de endpoint ao utilizar o Amazon S3 como destino para o AWS DMS. Para obter mais informações sobre ACLs pré-configuradas do Amazon S3, consulte ACL pré-configurada.

O perfil do IAM que você utiliza para a migração deve ser capaz de executar a operação da API s3:PutObjectAcl.

Utilizar o Apache Parquet para armazenar objetos do Amazon S3

O formato de valores separados por vírgulas (.csv) é o formato do armazenamento padrão para objetos de destino do Amazon S3. Para obter armazenamento compacto e consultas mais rápidas, é possível utilizar o Apache Parquet (.parquet) como o formato de armazenamento.

O Apache Parquet é um formato de armazenamento de arquivos de código aberto originalmente projetado para o Hadoop. Para obter mais informações sobre o Apache Parquet, consulte https://parquet.apache.org/.

Para definir o .parquet como o formato de armazenamento para os objetos de destino do S3, é possível utilizar os seguintes mecanismos:

Marcação de objetos do Amazon S3

É possível marcar objetos do Amazon S3 criados por uma instância de replicação especificando objetos JSON adequados como parte das regras de mapeamento de tarefa-tabela. Para obter mais informações sobre os requisitos e as opções de marcação de objetos do S3, incluindo nomes de tag válidos, consulte Marcação de objetos no Guia do usuário do Amazon Simple Storage Service. Para obter mais informações sobre o mapeamento de tabelas utilizando JSON, consulte Especificar a seleção de tabelas e as regras de transformação utilizando JSON.

Você marca objetos do S3 criados para tabelas e esquemas especificados utilizando um ou mais objetos JSON do tipo de regra selection. Então, você segue esse objeto (ou objetos) selection por um ou mais objetos JSON do tipo de regra post-processing com a ação add-tag. Essas regras de pós-processamento identificam os objetos do S3 que você deseja marcar e especificar os nomes e valores das tags que você deseja adicionar a esses objetos do S3.

É possível encontrar os parâmetros para especificar em objetos JSON do tipo de regra post-processing na tabela a seguir.

Parâmetro Possíveis valores Descrição
rule-type post-processing

Um valor que aplica ações de pós-processamento aos objetos de destino gerados. É possível especificar uma ou mais regras de pós-processamento para marcar objetos do S3 selecionados.

rule-id Um valor numérico. Um valor numérico exclusivo para identificar a regra.
rule-name Um valor alfanumérico. Um nome exclusivo para identificar a regra.
rule-action add-tag A ação de pós-processamento que você deseja aplicar ao objeto do S3. É possível adicionar uma ou mais tags utilizando um único objeto fr pós-processamento do JSON para a ação add-tag.
object-locator

schema-name: o nome do esquema da tabela.

table-name: o nome da tabela.

O nome de cada esquema e tabela aos quais a regra se aplica. É possível utilizar o sinal de porcentagem "%" como um curinga para todo ou parte do valor de cada parâmetro object-locator. Assim, você pode corresponder estes itens:

  • Uma única tabela em um único esquema

  • Uma única tabela em alguns ou em todos os esquemas

  • Algumas ou todas as tabelas em um único esquema.

  • Algumas ou todas as tabelas em alguns ou em todos os esquemas

tag-set

key: qualquer nome válido para uma única tag.

value: qualquer valor JSON válido para esta tag.

Os nomes e os valores de uma ou mais tags que você deseja definir em cada objeto do S3 criado, que corresponde ao object-locator especificado. É possível especificar até 10 pares de chave-valor em um único objeto de parâmetro tag-set. Para obter mais informações sobre a marcação de objetos do S3, consulte Marcação de objetos no Guia do usuário do Amazon Simple Storage Service.

Também é possível especificar um valor dinâmico para todo ou parte do valor para os parâmetros value e key de uma tag utilizando ${dyn-value}. Aqui, ${dyn-value} pode ser ${schema-name} ou ${table-name}. Portanto, é possível inserir o nome do esquema ou da tabela selecionada no momento como todo ou qualquer parte do valor do parâmetro.

nota
Importante

Se você inserir um valor dinâmico para o parâmetro key, poderá gerar tags com nomes duplicados para um objeto do S3, dependendo de como usá-lo. Nesse caso, apenas uma das configurações de tag duplicadas é adicionada ao objeto.

Ao especificar vários tipos de regra post-processing para marcar uma seleção de objetos do S3, cada objeto do S3 é marcado utilizando apenas um objeto tag-set de uma regra de pós-processamento. O conjunto de tags específico utilizado para marcar um determinado objeto do S3 é aquele da regra de pós-processamento cujo localizador de objeto associado corresponde melhor ao objeto do S3.

Por exemplo, suponha que duas regras de pós-processamento identificam o mesmo objeto do S3. Suponha também que o localizador de objetos de uma regra use curingas, e que o localizador de objetos de outra regra use uma correspondência exata para identificar o objeto do S3 (sem curingas). Nesse caso, o conjunto de tags associado à regra pós-processamento com a correspondência exata é utilizado para marcar o objeto do S3. Se várias regras de pós-processamento corresponderem a um determinado objeto do S3 igualmente bem, o conjunto de tags associado à primeira regra de pós-processamento será utilizado para marcar o objeto.

exemplo Adicionar tags estáticas a um objeto do S3 criado para uma única tabela e esquema

As seguintes regras de seleção e pós-processamento adicionam três tags (tag_1, tag_2 e tag_3 com valores estáticos correspondentes, value_1, value_2 e value_3) a um objeto do S3 criado. Esse objeto do S3 corresponde a uma única tabela na origem chamada STOCK com um esquema chamado aat2.

{ "rules": [ { "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat2", "table-name": "STOCK" }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" }, { "key": "tag_3", "value": "value_3" } ] } ] }
exemplo Adicionar tags estáticas e dinâmicas a objetos do S3 criados para várias tabelas e esquemas

O exemplo a seguir tem uma seleção e duas regras de pós-processamento, em que a entrada da origem inclui todas as tabelas e todos os seus esquemas.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "%", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_${table-name}" } ] }, { "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": { "schema-name": "aat", "table-name": "ITEM", }, "tag-set": [ { "key": "tag_1", "value": "value_1" }, { "key": "tag_2", "value": "value_2" } ] } ] }

A primeira regra de pós-processamento adiciona duas tags (dw-schema-name e dw-schema-table) com valores dinâmicos correspondentes (${schema-name} e my_prefix_${table-name}) a quase todos os objetos do S3 criados no destino. A exceção é o objeto do S3 identificado e marcado com a segunda regra de pós-processamento. Assim, cada objeto de destino do S3 identificado pelo localizador de objetos curinga é criado com tags que identificam o esquema e a tabela à qual ele corresponde na origem.

A segunda regra de pós-processamento adiciona tag_1 e tag_2 com valores estáticos correspondentes value_1 e value_2 a um objeto do S3 criado, que é identificado por um localizador de objetos de correspondência exata. Esse objeto do S3 criado, portanto, corresponde à uma única tabela na origem chamada ITEM com um esquema chamado aat. Devido à correspondência exata, essas tags substituem todas as tags nesse objeto adicionado na primeira regra de pós-processamento, que corresponde a objetos do S3 apenas por meio de curinga.

exemplo Adicionar nomes e valores de tags dinâmicas a objetos do S3

O exemplo a seguir tem duas regras de seleção e uma regra de pós-processamento. Aqui, a entrada da origem inclui apenas a tabela ITEM no esquema retail ou wholesale.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "retail", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "wholesale", "table-name": "ITEM" }, "rule-action": "include" }, { "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": { "schema-name": "%", "table-name": "ITEM", }, "tag-set": [ { "key": "dw-schema-name", "value":"${schema-name}" }, { "key": "dw-schema-table", "value": "my_prefix_ITEM" }, { "key": "${schema-name}_ITEM_tag_1", "value": "value_1" }, { "key": "${schema-name}_ITEM_tag_2", "value": "value_2" } ] ] }

O conjunto de tags da regra de pós-processamento adiciona duas tags (dw-schema-name e dw-schema-table) para todos os objetos do S3 criados para a tabela ITEM no destino. A primeira tag tem o valor dinâmico "${schema-name}", e a segunda tag tem um valor estático, "my_prefix_ITEM". Assim, cada objeto de destino do S3 é criado com tags que identificam o esquema e a tabela à qual ele corresponde na origem.

Além disso, o conjunto de tags adiciona duas tags adicionais com nomes dinâmicos (${schema-name}_ITEM_tag_1 e "${schema-name}_ITEM_tag_2"). Essas têm valores estáticos correspondentes value_1 e value_2. Portanto, cada uma dessas tags são nomeadas pelo esquema atual, retail ou wholesale. Não é possível criar um nome de tag dinâmico duplicado nesse objeto, porque cada objeto é criado para um único nome de esquema exclusivo. O nome do esquema é utilizado para criar um nome de tag exclusivo de outra forma.

Criar chaves do AWS KMS para criptografar objetos de destino do Amazon S3

É possível criar e utilizar chaves personalizadas do AWS KMS para criptografar os objetos de destino do Amazon S3. Depois de criar uma chave do KMS, é possível utilizá-la para criptografar objetos utilizando uma das seguintes abordagens ao criar o endpoint de destino do S3:

  • Utilize as seguintes opções para objetos de destino do S3 (com o formato de armazenamento de arquivo .csv padrão) ao executar o comando create-endpoint utilizando a AWS CLI.

    --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'

    Aqui, your-KMS-key-ARN é o nome de recurso da Amazon (ARN) de sua chave do KMS. Para obter mais informações, consulte Utilizar criptografia de dados, arquivos de parquet e de CDC no destino do Amazon S3.

  • Defina o atributo de conexão adicional encryptionMode como o valor SSE_KMS, e o atributo de conexão adicional serverSideEncryptionKmsKeyId como o ARN de sua chave do KMS. Para obter mais informações, consulte Configurações de endpoint ao utilizar o Amazon S3 como destino para o AWS DMS.

Para criptografar os objetos de destino do Amazon S3 utilizando uma chave do KMS, você precisa de um perfil do IAM que tenha permissões para acessar o bucket do Amazon S3. Esse perfil do IAM é acessado em uma política (uma política de chaves) anexada à chave de criptografia criada. É possível fazer isso no console do IAM criando o seguinte:

  • Uma política com permissões para acessar o bucket do Amazon S3.

  • Um perfil do IAM com essa política.

  • A chave de criptografia do KMS com uma política de chaves que faz referência a esse perfil.

Os procedimentos a seguir descrevem como fazer isso.

Para criar uma política do IAM com permissões para acessar o bucket do Amazon S3.
  1. Abra o console IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Policies (Políticas). A página Policies (Políticas) é aberta.

  3. Escolha Create policy (Criar política). A página Create policy (Criar política) é aberta.

  4. Escolha Service (Serviço) e escolha S3. Uma lista de permissões de ação é exibida.

  5. Escolha Expand all (Expandir tudo) para expandir a lista e escolha as seguintes permissões no mínimo:

    • ListBucket

    • PutObject

    • DeleteObject

    Escolha todas as outras permissões necessárias e escolha Collapse all (Recolher tudo) para recolher a lista.

  6. Escolha Resouces (Recursos) para especificar os recursos que você deseja acessar. No mínimo, escolha Todos os recursos para fornecer acesso geral aos recursos do Amazon S3.

  7. Adicione todas as outras condições ou permissões necessárias e escolha Review policy (Revisar política). Verifique os resultados na página Review policy (Revisar política).

  8. Se as configurações forem o que você precisa, insira um nome para a política (por exemplo, DMS-S3-endpoint-access), e qualquer descrição adicional e escolha Criar política. A página Policies (Políticas) é aberta com uma mensagem indicando que sua política foi criada.

  9. Pesquise e escolha o nome da política na lista Policies (Políticas). A página Summary (Resumo) é aberta exibindo o JSON da política, semelhante ao seguinte.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:DeleteObject" ], "Resource": "*" } ] }

Agora, você criou a política para acessar os recursos do Amazon S3 para a criptografia com um nome específico, por exemplo DMS-S3-endpoint-access.

Como criar um perfil do IAM com essa política
  1. No console do IAM, escolha Perfis no painel de navegação. A página de detalhes de Perfis é aberta.

  2. Selecione Criar perfil. A página Create role (Criar função) é aberta.

  3. Com o serviço da AWS selecionado como a entidade confiável, escolha DMS como o serviço que utilizará o perfil do IAM.

  4. Escolha Próximo: permissões. A visualização Attach permissions policies (Anexar políticas de permissões) é exibida na página Create role (Criar função).

  5. Encontre e selecione a política do IAM para o perfil do IAM criado no procedimento anterior (DMS-S3-endpoint-access).

  6. Escolha Próximo: etiquetas. A visualização Add tags (Adicionar tags) é exibida na página Create role (Criar função). Aqui, você pode adicionar todas as tags desejadas.

  7. Escolha Próximo: revisar. A visualização Review (Revisão) é exibida na página Create role (Criar função). Aqui, é possível verificar os resultados.

  8. Se as configurações forem o que você precisa, insira um nome para o perfil (obrigatório, por exemplo, DMS-S3-endpoint-access-role), e qualquer descrição adicional e escolha Criar função. A página de detalhes Funções é aberta com uma mensagem indicando que o perfil foi criado.

Agora, você criou o perfil para acessar os recursos do Amazon S3 para criptografia com um nome especificado, por exemplo, DMS-S3-endpoint-access-role.

Como criar uma chave de criptografia do KMS com uma política de chave que faz referência ao perfil do IAM
nota

Para obter mais informações sobre como AWS DMS funciona com chaves de criptografia do AWS KMS, consulte Configurando uma chave de criptografia e especificando permissões AWS KMS.

  1. Faça login no AWS Management Console e abra o console do AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms.

  2. Para alterar a Região da AWS, use o Region selector (Seletor de regiões) no canto superior direito da página.

  3. No painel de navegação, escolha Customer managed keys (Chaves gerenciadas pelo cliente).

  4. Escolha Create key (Criar chave). A página Configure key (Configurar chave) é aberta.

  5. Para Key type (Tipo de chave), escolha Symmetric (Simétrica).

    nota

    Ao criar essa chave, só é possível criar uma chave simétrica, pois todos os serviços da AWS, como o Amazon S3, funcionam somente com chaves de criptografia simétricas.

  6. Escolha Opções avançadas. Para Key material origin (Origem do material da chave), certifique-se de que o KMS está escolhido e escolha Next (Próximo). A página Add labels (Adicionar rótulos) é aberta.

  7. Em Create alias and description (Criar alias e descrição), insira um alias para a chave (por exemplo, DMS-S3-endpoint-encryption-key) e qualquer descrição adicional.

  8. Em Tags, adicione todas as tags desejadas para ajudar a identificar a chave e controlar seu uso e escolha Next (Próximo). A página Define key administrative permissions (Definir permissões administrativas de chaves) é aberta mostrando uma lista de usuários e funções que podem ser escolhidos.

  9. Adicione os usuários e as funções desejados para gerenciar a chave. Certifique-se de que esses usuários e funções tenham as permissões necessárias para gerenciar a chave.

  10. Em Key deletion (Exclusão de chaves), escolha se os administradores de chaves podem excluir a chave e escolha Next (Próximo). A página Define key usage permissions (Definir permissões de uso de chaves) é aberta mostrando uma lista adicional de usuários e funções que podem ser escolhidos.

  11. Para Esta conta, escolha os usuários disponíveis que você deseja que executem operações criptográficas em destinos do Amazon S3. Escolha também o perfil criado anteriormente em Perfis para ativar o acesso à criptografia dos objetos de destino do Amazon S3, por exemplo, DMS-S3-endpoint-access-role).

  12. Se quiser adicionar outras contas não listadas para ter esse mesmo acesso, em Outras contas da AWS, escolha Adicionar outra conta da AWS e escolha Próximo. A página Review and edit key policy (Rever e editar política de chave) é aberta mostrando o JSON da política de chave que você pode revisar e editar digitando no JSON existente. Aqui, a política de chave que faz referência à função e aos usuários é mostrada (por exemplo, Admin e User1) que você escolheu na etapa anterior. Também é possível ver as diferentes ações de chaves permitidas para as várias entidades principais (usuários e perfis), conforme mostrado no exemplo a seguir.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. Escolha Terminar. A página Chaves de criptografia é aberta com uma mensagem indicando que a chave do KMS foi criada.

Agora, você criou uma nova chave do KMS com um alias especificado (por exemplo, DMS-S3-endpoint-encryption-key). Essa chave permite que o AWS DMS criptografe os objetos de destino do Amazon S3.

Utilizar o particionamento de pastas com base em data

O AWS DMS é compatível com partições de pastas do S3 com base na data de confirmação da transação ao utilizar o Amazon S3 como o endpoint de destino. Utilizando o particionamento de pastas com base em data, é possível gravar dados de uma única tabela de origem em uma estrutura de pastas com hierarquia temporal em um bucket do S3. Ao particionar pastas ao criar um endpoint de destino do S3, é possível fazer o seguinte:

  • Gerenciar melhor os objetos do S3

  • Limitar o tamanho de cada pasta do S3

  • Otimizar consultas de data lake ou outras operações subsequentes

É possível ativar o particionamento de pastas com base em data ao criar um endpoint de destino do S3. É possível ativá-lo ao migrar dados existentes e ao replicar alterações em andamento (carga máxima + CDC) ou replicar somente alterações de dados (somente CDC). Utilize as seguintes configurações de endpoint de destino:

  • DatePartitionEnabled: especifica o particionamento com base em datas. Defina esta opção Boolean como true para particionar pastas de bucket do S3 com base nas datas de confirmação da transação.

    Não é possível utilizar essa configuração com PreserveTransactions ou CdcPath.

    O valor padrão é false.

  • DatePartitionSequence: identifica a sequência do formato de data a ser utilizado durante o particionamento de pastas. Defina esta opção ENUM como YYYYMMDD, YYYYMMDDHH, YYYYMM, MMYYYYDD ou DDMMYYYY. O valor padrão é YYYYMMDD. Utilize essa configuração quando DatePartitionEnabled estiver definido como true..

  • DatePartitionDelimiter: especifica um delimitador de separação de datas a ser utilizado durante o particionamento de pastas. Defina esta opção ENUM como SLASH, DASH, UNDERSCORE ou NONE. O valor padrão é SLASH. Utilize essa configuração quando DatePartitionEnabled estiver definido como true.

O exemplo a seguir mostra como ativar o particionamento de pastas com base em data, com valores padrão para a sequência e o delimitador da partição de dados. Ele utiliza a opção --s3-settings '{json-settings}' AWS CLI. Comando da create-endpoint.

--s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'

Carga paralela de origens particionadas ao utilizar o Amazon S3 como destino do AWS DMS

É possível configurar uma carga máxima paralela de fontes de dados particionadas para destinos do Amazon S3. Essa abordagem melhora os tempos de carga da migração de dados particionados nos mecanismos de banco de dados de origem compatíveis para o destino do S3. Para melhorar os tempos de carga dos dados de origem particionados, crie subpastas de destino do S3 mapeadas para as partições de cada tabela no banco de dados de origem. Essas subpastas vinculadas à partição permitem que o AWS DMS execute processos paralelos para preencher cada subpasta no destino.

Para configurar uma carga máxima paralela de um destino do S3, o S3 é compatível com os três tipos de regra parallel-load para a regra table-settings de mapeamento de tabela:

  • partitions-auto

  • partitions-list

  • ranges

Para obter mais informações sobre esses tipos de regra de carga paralela, consulte Regras e operações de configurações de tabelas e coleções.

Para os tipos de regra partitions-auto e partitions-list, o AWS DMS utiliza o nome de cada partição do endpoint de origem para identificar a estrutura da subpasta de destino, da seguinte forma.

bucket_name/bucket_folder/database_schema_name/table_name/partition_name/LOADseq_num.csv

Aqui, o caminho da subpasta em que os dados são migrados e armazenados no destino do S3 inclui uma subpasta partition_name adicional que corresponde a uma partição de origem com o mesmo nome. Essa subpasta partition_name armazena um ou mais arquivos LOADseq_num.csv contendo os dados migrados da partição de origem especificada. Aqui, seq_num é o sufixo do número de sequência no nome do arquivo .csv, como 00000001 no arquivo .csv com o nome LOAD00000001.csv.

No entanto, alguns mecanismos de banco de dados, como MongoDB e o DocumentDB, não têm o conceito de partições. Para esses mecanismos de banco de dados, o AWS DMS adiciona o índice do segmento de origem em execução como um prefixo para o nome do arquivo .csv de destino, da seguinte maneira.

.../database_schema_name/table_name/SEGMENT1_LOAD00000001.csv .../database_schema_name/table_name/SEGMENT1_LOAD00000002.csv ... .../database_schema_name/table_name/SEGMENT2_LOAD00000009.csv .../database_schema_name/table_name/SEGMENT3_LOAD0000000A.csv

Aqui, os arquivos SEGMENT1_LOAD00000001.csv e SEGMENT1_LOAD00000002.csv são nomeados com o mesmo prefixo de índice do segmento de origem em execução, SEGMENT1. Eles são nomeados assim porque os dados de origem migrados para esses dois arquivos .csv estão associados ao mesmo índice de segmento de origem em execução. Por outro lado, os dados migrados armazenados em cada um dos arquivos SEGMENT2_LOAD00000009.csv e SEGMENT3_LOAD0000000A.csv de destino estão associados a diferentes índices de segmentos de origem em execução. Cada arquivo tem seu nome prefixado com o nome de seu índice de segmento em execução, SEGMENT2 e SEGMENT3.

Para o tipo de carga paralela ranges, defina os nomes e valores das colunas utilizando as configurações columns e boundaries das regras table-settings. Com essas regras, é possível especificar partições correspondentes aos nomes dos segmentos, da seguinte maneira.

"parallel-load": { "type": "ranges", "columns": [ "region", "sale" ], "boundaries": [ [ "NORTH", "1000" ], [ "WEST", "3000" ] ], "segment-names": [ "custom_segment1", "custom_segment2", "custom_segment3" ] }

Aqui, a configuração de segment-names define nomes de três partições para migrar dados em paralelo no destino do S3. Os dados migrados são carregados paralelamente e armazenados em arquivos .csv nas subpastas da partição em ordem, da seguinte maneira.

.../database_schema_name/table_name/custom_segment1/LOAD[00000001...].csv .../database_schema_name/table_name/custom_segment2/LOAD[00000001...].csv .../database_schema_name/table_name/custom_segment3/LOAD[00000001...].csv

Aqui, o AWS DMS armazena uma série de arquivos .csv em cada uma das três subpastas de partição. A série de arquivos .csv em cada subpasta de partição é nomeada de forma incremental, começando com LOAD00000001.csv até que todos os dados sejam migrados.

Em alguns casos, é possível não nomear explicitamente as subpastas de partição para um tipo de carga paralela ranges utilizando a configuração segment-names. Nesse caso, o AWS DMS aplica o padrão de criação de cada série de arquivos .csv em sua subpasta table_name. Aqui, o AWS DMS prefixa os nomes dos arquivos de cada série de arquivos .csv com o nome do índice do segmento de origem em execução, da seguinte forma.

.../database_schema_name/table_name/SEGMENT1_LOAD[00000001...].csv .../database_schema_name/table_name/SEGMENT2_LOAD[00000001...].csv .../database_schema_name/table_name/SEGMENT3_LOAD[00000001...].csv ... .../database_schema_name/table_name/SEGMENTZ_LOAD[00000001...].csv

Configurações de endpoint ao utilizar o Amazon S3 como destino para o AWS DMS

É possível utilizar as configurações de endpoint para configurar o banco de dados de destino do Amazon S3 de forma semelhante à utilização de atributos de conexão adicional. Você especifica as configurações ao criar o endpoint de destino utilizando o console do AWS DMS ou o comando create-endpoint na AWS CLI, com a sintaxe --s3-settings '{"EndpointSetting": "value", ...}' do JSON.

A tabela a seguir mostra as configurações de endpoint que é possível utilizar com o Amazon S3 como destino.

Opção Descrição
CsvNullValue

Um parâmetro opcional que especifica como o AWS DMS trata valores nulos. Ao tratar o valor nulo, é possível utilizar esse parâmetro para passar uma string definida pelo usuário como nula ao gravar no destino. Por exemplo, quando as colunas de destino forem anuláveis, é possível utilizar essa opção para diferenciar entre o valor de string vazia e o valor nulo. Portanto, se você definir o valor desse parâmetro como a string vazia (" " ou ''), o AWS DMS tratará a string vazia como o valor nulo em vez de NULL.

Valor padrão: NULL

Valores válidos: qualquer string válida.

Exemplo: --s3-settings '{"CsvNullValue": " "}'

AddColumnName

Um parâmetro opcional que, quando definido como true ou y, pode ser utilizado para adicionar informações de nome de coluna ao arquivo .csv de saída.

Não é possível utilizar esse parâmetro com PreserveTransactions ou CdcPath.

Valor padrão: false

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"AddColumnName": true}'

AddTrailingPaddingCharacter

Utilize a configuração AddTrailingPaddingCharacter do endpoint de destino do S3 para adicionar preenchimento aos dados da string. O valor padrão é false.

Tipo: booliano

Exemplo: --s3-settings '{"AddTrailingPaddingCharacter": true}'

BucketFolder

Um parâmetro opcional para definir um nome de pasta no bucket do S3. Se fornecidos, os objetos de destino serão criados como arquivos .csv ou .parquet no caminho BucketFolder/schema_name/table_name/. Se esse parâmetro não for especificado, o caminho utilizado será schema_name/table_name/.

Exemplo: --s3-settings '{"BucketFolder": "testFolder"}'

BucketName

O nome do bucket do S3 no qual os objetos de destino do S3 são criados como arquivos .csv ou .parquet.

Exemplo: --s3-settings '{"BucketName": "buckettest"}'

CannedAclForObjects

Permite que o AWS DMS especifique uma lista de controle de acesso (pré-configurada) predefinida no bucket do S3 como arquivos .csv ou .parquet. Para obter mais informações sobre ACLs pré-configuradas do Amazon S3, consulte ACL pré-configurada no Guia do desenvolvedor do Amazon S3.

Valor padrão: NONE

Os valores válidos para este atributo são: NONE; PRIVATE; PUBLIC_READ; PUBLIC_READ_WRITE; AUTHENTICATED_READ; AWS_EXEC_READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL.

Exemplo: --s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'

CdcInsertsOnly

Um parâmetro opcional durante um carga de captura de dados de alteração (CDC) para gravar apenas operações INSERT nos arquivos de saída de valores separados por vírgulas (.csv) ou de armazenamento colunar (.parquet). Por padrão (a configuração false), o primeiro campo em um registro .csv ou .parquet contém a letra I (INSERT), U (UPDATE) ou D (DELETE). Esta carta indica se a linha foi inserida, atualizada ou excluída no banco de dados de origem para um carregamento CDC no destino. Se cdcInsertsOnly estiver definido como true ou y, somente os INSERTs do banco de dados de origem serão migrados para o arquivo .csv ou .parquet.

Somente no caso do formato .csv, a maneira como esses INSERTS são registrados depende do valor IncludeOpForFullLoad. Se IncludeOpForFullLoad estiver definido como true, o primeiro campo de cada registro CDC será definido como I para indicar a operação INSERT na origem. Se IncludeOpForFullLoad estiver definido como false, os registros CDC serão gravados sem um primeiro campo indicando a operação INSERT na origem. Para obter mais informações sobre como esses parâmetros funcionam juntos, consulte Indicar operações de banco de dados de origem em dados migrados do S3.

Valor padrão: false

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"CdcInsertsOnly": true}'

CdcInsertsAndUpdates

Habilita uma carga de captura de dados de alteração (CDC) para gravar operações INSERT e UPDATE em arquivos de saída .csv ou .parquet (armazenamento colunar). A configuração padrão é false, mas quando cdcInsertsAndUpdates é definido como true ou y, INSERTs e UPDATEs no banco de dados de origem são migrados para o arquivo .csv ou .parquet.

Somente para o formato de arquivo .csv, a maneira como esses INSERTs e UPDATEs são registrados depende do valor do parâmetro includeOpForFullLoad. Se includeOpForFullLoad estiver definido como true, o primeiro campo de cada registro CDC será definido como I ou U para indicar operações INSERT e UPDATE na origem. Mas se includeOpForFullLoad for definido como false, os registros CDC serão gravados sem uma indicação de operações INSERT ou UPDATE na origem.

Para obter mais informações sobre como esses parâmetros funcionam juntos, consulte Indicar operações de banco de dados de origem em dados migrados do S3.

nota

CdcInsertsOnly e cdcInsertsAndUpdates não podem ambos serem definidos como true para o mesmo endpoint. Defina cdcInsertsOnly ou cdcInsertsAndUpdates true para o mesmo endpoint, mas não os dois.

Valor padrão: false

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"CdcInsertsAndUpdates": true}'

CdcPath

Especifica o caminho da pasta dos arquivos CDC. Para uma origem do S3, essa configuração é necessária se uma tarefa captura os dados de alterações; caso contrário, ela é opcional. Se CdcPath estiver definido, o DMS lerá os arquivos da CDC nesse caminho e replicará as alterações de dados no endpoint de destino. Para um destino do S3, se você definir PreserveTransactions como verdadeiro, o DMS verificará se você definiu esse parâmetro para um caminho de pasta no destino do S3, em que o DMS pode salvar a ordem das transações na carga da CDC. O DMS cria esse caminho de pasta CDC no diretório de trabalho de destino do S3 ou no local de destino do S3 especificado por BucketFolder e BucketName.

Não é possível utilizar esse parâmetro com DatePartitionEnabled ou AddColumnName.

Tipo: string

Por exemplo, se você especificar CdcPath como MyChangedData e especificar BucketName como MyTargetBucket, mas não especificar BucketFolder, o DMS criará o seguinte caminho da pasta CDC: MyTargetBucket/MyChangedData.

Se você especificar o mesmo CdcPath e especificar BucketName como MyTargetBucket e BucketFolder como MyTargetData, o DMS criará o seguinte caminho da pasta CDC: MyTargetBucket/MyTargetData/MyChangedData.

nota

Essa configuração é compatível no AWS DMS versões 3.4.2 e superiores.

Ao capturar alterações de dados na ordem da transação, o DMS sempre armazena as alterações de linha em arquivos .csv, independentemente do valor da configuração de DataFormat do S3 no destino. O DMS não salva as alterações de dados na ordem da transação utilizando arquivos .parquet.

CdcMaxBatchInterval

Condição de tamanho máximo do intervalo, definido em segundos, para a saída de um arquivo para o Amazon S3.

Valor padrão: 60 segundos

Quando CdcMaxBatchInterval e CdcMinFileSize forem especificados, a gravação do arquivo será acionada por qualquer condição de parâmetro que seja atendida primeiro.

CdcMinFileSize

Condição de tamanho mínimo do arquivo, definido em kilobytes, para a saída de um arquivo para o Amazon S3.

Valor padrão: 32000 KB

Quando CdcMinFileSize e CdcMaxBatchInterval forem especificados, a gravação do arquivo será acionada por qualquer condição de parâmetro que seja atendida primeiro.

PreserveTransactions

Se definido como true, o DMS salvará a ordem da transação para a captura de dados de alteração (CDC) no destino do Amazon S3 especificado por CdcPath.

Não é possível utilizar esse parâmetro com DatePartitionEnabled ou AddColumnName.

Tipo: booliano

Ao capturar alterações de dados na ordem da transação, o DMS sempre armazena as alterações de linha em arquivos .csv, independentemente do valor da configuração de DataFormat do S3 no destino. O DMS não salva as alterações de dados na ordem da transação utilizando arquivos .parquet.

nota

Essa configuração é compatível no AWS DMS versões 3.4.2 e superiores.

IncludeOpForFullLoad

Um parâmetro opcional durante um carga máxima para gravar operações INSERT só nos arquivos de saída de valores separados por vírgulas (.csv).

Em cargas máximas, os registros só podem ser inseridos. Por padrão (a configuração false), não há informações gravadas nesses arquivos de saída para um carga máxima indicando que as linhas foram inseridas no banco de dados de origem. Se IncludeOpForFullLoad estiver definido como true ou y, INSERT será registrado utilizando a letra I no primeiro campo do arquivo .csv.

nota

Esse parâmetro funciona em conjunto com CdcInsertsOnly ou CdcInsertsAndUpdates somente para arquivos .csv de saída. Para obter mais informações sobre como esses parâmetros funcionam juntos, consulte Indicar operações de banco de dados de origem em dados migrados do S3.

Valor padrão: false

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"IncludeOpForFullLoad": true}'

CompressionType

Um parâmetro opcional ao definir como GZIP utiliza o GZIP para compactar os arquivos .csv ou .parquet de destino. Quando esse parâmetro é definido como o padrão, ele deixa os arquivos descompactados.

Valor padrão: NONE

Valores válidos: GZIP ou NONE

Exemplo: --s3-settings '{"CompressionType": "GZIP"}'

CsvDelimiter

O delimitador utilizado para separar colunas nos arquivos .csv de origem. O padrão é uma vírgula (,).

Exemplo: --s3-settings '{"CsvDelimiter": ","}'

CsvRowDelimiter

O delimitador utilizado para separar linhas nos arquivos .csv de origem. O padrão é uma nova linha (\n).

Exemplo: --s3-settings '{"CsvRowDelimiter": "\n"}'

MaxFileSize

Um valor que especifica o tamanho máximo (em KB) de qualquer arquivo .csv a ser criado ao migrar para um destino do S3 durante a carga máxima.

Valor padrão: 1.048.576 KB (1 GB)

Valores válidos: 1 a 1.048.576

Exemplo: --s3-settings '{"MaxFileSize": 512}'

Rfc4180

Um parâmetro opcional utilizado para definir o comportamento com o propósito de determinar a conformidade com RFC para os dados migrados para o Amazon S3 utilizando somente o formato de arquivo .csv. Quando esse valor é definido como true ou y utilizando o Amazon S3 como destino, se os dados tiverem aspas, vírgulas ou caracteres de nova linha, o AWS DMS envolverá toda a coluna com um par de aspas duplas adicionais ("). Cada aspa dentro dos dados é repetida duas vezes. Essa formatação está em conformidade com RFC 4180.

Valor padrão: true

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"Rfc4180": false}'

EncryptionMode

O modo de criptografia do lado do servidor que você deseja utilizar para criptografar os arquivos de objetos .csv ou .parquet copiados no S3. Os valores válidos são SSE_S3 (criptografia no lado do servidor do S3) ou SSE_KMS (criptografia da chave do KMS). Se você escolher SSE_KMS, defina o parâmetro ServerSideEncryptionKmsKeyId como o Nome do recurso da Amazon (ARN) para a chave do KMS a ser usada para a criptografia.

nota

Também é possível utilizar o comando modify-endpoint da CLI para alterar o valor do atributo EncryptionMode de um endpoint existente de SSE_KMS para SSE_S3. Mas não é possível alterar o valor de EncryptionMode de SSE_S3 para SSE_KMS.

Valor padrão: SSE_S3

Valores válidos: SSE_S3 ou SSE_KMS

Exemplo: --s3-settings '{"EncryptionMode": SSE_S3}'

ServerSideEncryptionKmsKeyId

Se você definir EncryptionMode como SSE_KMS, defina esse parâmetro como o nome do recurso da Amazon (ARN) da chave do KMS. É possível encontrar esse ARN selecionando o alias da chave na lista de chaves do AWS KMS criada para a sua conta. Ao criar a chave, você deve associar políticas e perfis específicos associadas a essa chave do KMS. Para obter mais informações, consulte Criar chaves do AWS KMS para criptografar objetos de destino do Amazon S3.

Exemplo: --s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

DataFormat

O formato de saída dos arquivos que o AWS DMS utiliza para criar objetos do S3. Para destinos do Amazon S3, o AWS DMS é compatível com arquivos .csv ou .parquet. Os arquivos .parquet têm um formato de armazenamento colunar binário com opções de compactação eficientes e desempenho de consulta mais rápido. Para obter mais informações sobre os arquivos .parquet, consulte https://parquet.apache.org/.

Valor padrão: csv

Valores válidos: csv ou parquet

Exemplo: --s3-settings '{"DataFormat": "parquet"}'

EncodingType

O tipo de codificação Parquet. As opções do tipo de compactação incluem as seguintes:

  • rle-dictionary: essa codificação de dicionário utiliza uma combinação de empacotamento de bits e de codificação de run-length para armazenar valores repetidos de forma mais eficiente.

  • plain: sem codificação.

  • plain-dictionary: essa codificação de dicionário compila um dicionário dos valores encontrados em uma determinada coluna. O dicionário é armazenado em uma página de dicionário para cada bloco da coluna.

Valor padrão: rle-dictionary

Valores válidos: rle-dictionary, plain ou plain-dictionary

Exemplo: --s3-settings '{"EncodingType": "plain-dictionary"}'

DictPageSizeLimit

O tamanho máximo permitido, em bytes, para uma página de dicionário em um arquivo .parquet. Se uma página de dicionário exceder esse valor, a página usará a codificação simples.

Valor padrão: 1.024.000 (1 MB)

Valores válidos: qualquer valor inteiro válido

Exemplo: --s3-settings '{"DictPageSizeLimit": 2,048,000}'

RowGroupLength

O número de linhas em um grupo de linhas de um arquivo .parquet.

Valor padrão: 10.024 (10 KB)

Valores válidos: qualquer número inteiro válido

Exemplo: --s3-settings '{"RowGroupLength": 20,048}'

DataPageSize

O tamanho máximo permitido, em bytes, para uma página de dados em um arquivo .parquet.

Valor padrão: 1.024.000 (1 MB)

Valores válidos: qualquer número inteiro válido

Exemplo: --s3-settings '{"DataPageSize": 2,048,000}'

ParquetVersion

A versão do formato do arquivo .parquet.

Valor padrão: PARQUET_1_0

Valores válidos: PARQUET_1_0 ou PARQUET_2_0

Exemplo: --s3-settings '{"ParquetVersion": "PARQUET_2_0"}'

EnableStatistics

Defina como true ou y para ativar as estatísticas sobre páginas e grupos de linhas do arquivo .parquet.

Valor padrão: true

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"EnableStatistics": false}'

TimestampColumnName

Um parâmetro opcional para incluir uma coluna de timestamp nos dados de endpoint de destino do S3.

O AWS DMS inclui uma coluna STRING adicional nos arquivos de objeto .parquet ou .csv dos dados migrados quando você define TimestampColumnName como um valor não vazio.

Em uma carga completa, cada linha da coluna de timestamp contém um timestamp para quando os dados foram transferidos da origem para o destino pelo DMS.

Em um carregamento de CDC, cada linha da coluna de timestamp contém o timestamp da confirmação da linha no banco de dados de origem.

O formato de string para esse valor de coluna de timestamp é yyyy-MM-dd HH:mm:ss.SSSSSS. Por padrão, a precisão desse valor é em microssegundos. Para uma carga de CDC, o arredondamento da precisão depende do carimbo de data e hora de confirmação compatível com o DMS para o banco de dados de origem.

Quando o parâmetro AddColumnName for definido como true, o DMS também inclui o nome da coluna de timestamp definida como o valor não vazio de TimestampColumnName.

Exemplo: --s3-settings '{"TimestampColumnName": "TIMESTAMP"}'

UseTaskStartTimeForFullLoadTimestamp

Quando definido como true, esse parâmetro utiliza a hora de início da tarefa como o valor da coluna de timestamp em vez da hora em que os dados são gravados no destino. Para carga completa, quando o UseTaskStartTimeForFullLoadTimestamp for definido como true, cada linha da coluna de carimbo de data/hora mostrará a hora de início da tarefa. Para cargas de CDC, cada linha da coluna de data e hora contém o tempo de confirmação da transação.

Quando UseTaskStartTimeForFullLoadTimestamp está definido como false, o timestamp da carga máxima na coluna de timestamp é incrementado com data e hora em que os dados chegam ao destino.

Valor padrão: false

Valores válidos: true, false

Exemplo: --s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'

UseTaskStartTimeForFullLoadTimestamp: true ajuda a tornar TimestampColumnName do destino do S3 de uma carga máxima classificável com TimestampColumnName para uma carga de CDC.

ParquetTimestampInMillisecond

Um parâmetro opcional que especifica a precisão de qualquer valor de coluna TIMESTAMP gravado em um arquivo de objeto do S3 no formato .parquet.

Quando esse atributo é definido como true ou y, o AWS DMS grava todas as colunas TIMESTAMP em um arquivo com formato .parquet com precisão de milissegundos. Caso contrário, o DMS grava com precisão de microssegundos.

No momento, Amazon Athena e AWS Glue só podem lidar com precisão de milissegundos para valores TIMESTAMP. Defina esse atributo como verdadeiro para arquivos de objeto do endpoint do S3 formatados como .parquet somente se quiser consultar ou processar os dados com o Athena ou o AWS Glue.

nota
  • O AWS DMS grava qualquer valor de coluna TIMESTAMP gravado em um arquivo do S3 no formato .csv com precisão de microssegundos.

  • A configuração desse atributo não tem efeito sobre o formato da string do valor da coluna de timestamp inserido definindo o atributo TimestampColumnName.

Valor padrão: false

Valores válidos: true, false, y, n

Exemplo: --s3-settings '{"ParquetTimestampInMillisecond": true}'

GlueCatalogGeneration

Para gerar um AWS Glue Data Catalog, defina essa configuração de endpoint como true.

Valor padrão: false

Valores válidos: true, false.

Exemplo: --s3-settings '{"GlueCatalogGeneration": true}'

Observação: não utilize GlueCatalogGeneration com PreserveTransactions e CdcPath.

Utilizar o AWS Glue Data Catalog com um destino do Amazon S3 do AWS DMS

O AWS Glue é um serviço que fornece maneiras simples de categorizar dados e consiste em um repositório de metadados conhecido como AWS Glue Data Catalog. É possível integrar o AWS Glue Data Catalog ao endpoint de destino do Amazon S3 e consultar os dados do Amazon S3 por meio de outros serviços da AWS, como o Amazon Athena. O Amazon Redshift funciona com o AWS Glue, mas o AWS DMS não é compatível com isso como uma opção pré-criada.

Para gerar o catálogo de dados, defina a configuração GlueCatalogGeneration do endpoint como true, conforme mostrado no exemplo da AWS CLI a seguir.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'

Para uma tarefa de replicação de carga máxima que inclua o tipo de dados csv, defina IncludeOpForFullLoad como true.

Não utilize GlueCatalogGeneration com PreserveTransactions e CdcPath. O crawler do AWS Glue não pode reconciliar os diferentes esquemas de arquivos armazenados sob o CdcPath especificado.

Para que o Amazon Athena indexe os dados do Amazon S3, e para você consultar os dados utilizando consultas SQL padrão por meio do Amazon Athena, o perfil do IAM anexado ao endpoint deve ter a seguinte política:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::bucket123", "arn:aws:s3:::bucket123/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:GetDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:111122223333:catalog", "arn:aws:glue:*:111122223333:database/*", "arn:aws:glue:*:111122223333:table/*" ] }, { "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:CreateWorkGroup" ], "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*" } ] }
Referências
  • Para obter mais informações sobre o AWS Glue, consulte Conceitos no Guia do desenvolvedor do AWS Glue.

  • Para obter mais informações sobre o AWS Glue Data Catalog, consulte Componentes no Guia do desenvolvedor do AWS Glue.

Utilizar criptografia de dados, arquivos de parquet e de CDC no destino do Amazon S3

É possível utilizar as configurações do endpoint de destino do S3 para configurar o seguinte:

  • Uma chave do KMS personalizada para criptografar os objetos de destino do S3.

  • Arquivos parquet como o formato de armazenamento para objetos de destino do S3.

  • Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3.

  • Integre o AWS Glue Data Catalog com o endpoint de destino do Amazon S3 e consulte os dados do Amazon S3 por meio de outros serviços, como o Amazon Athena.

Configurações de chaves do AWS KMS para a criptografia de dados

Os exemplos a seguir mostram como configurar uma chave do KMS personalizada para criptografar os objetos de destino do S3. Para iniciar, execute o seguinte comando create-endpoint na CLI,

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'

Aqui, o objeto JSON especificado pela opção --s3-settings define dois parâmetros. Um é um parâmetro EncryptionMode com o valor SSE_KMS. O outro é um parâmetro ServerSideEncryptionKmsKeyId com o valor de arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480. Esse valor é um Nome de recurso da Amazon (ARN) para a chave personalizada do KMS. Para um destino do S3, você também pode especificar configurações adicionais. Esses identificam o perfil de acesso ao servidor, fornecem delimitadores para o formato de armazenamento de objetos CSV padrão e fornecem o local e o nome do bucket para armazenar objetos de destino do S3.

Por padrão, a criptografia dos dados do S3 ocorre usando a criptografia do lado do servidor do S3. Para o destino do S3 do exemplo anterior, isso também é equivalente a especificar suas configurações de endpoint, como no exemplo a seguir.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_S3"}'

Para obter mais informações sobre como trabalhar com a criptografia do lado do servidor do S3, consulte Proteger dados utilizando a criptografia do lado do servidor.

nota

Também é possível utilizar o comando modify-endpoint na CLI para alterar o valor do parâmetro EncryptionMode para um endpoint existente de SSE_KMS para SSE_S3. Mas não é possível alterar o valor de EncryptionMode de SSE_S3 para SSE_KMS.

Configurações para utilizar arquivos .parquet para armazenar objetos de destino do S3

O formato padrão para criar objetos de destino do S3 é arquivos .csv. Os exemplos a seguir mostram algumas configurações de endpoint para especificar arquivos .parquet como o formato para criar objetos de destino do S3. É possível especificar o formato .parquet de arquivos com todos os padrões, como no exemplo a seguir.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'

Aqui, o parâmetro DataFormat é definido como parquet para ativar o formato com todos os padrões do S3. Esses padrões incluem a codificação de um dicionário ("EncodingType: "rle-dictionary") que utiliza uma combinação de empacotamento de bits e de codificação de run-length para armazenar valores repetidos.

É possível adicionar outras configurações para opções diferentes do padrão, como no exemplo a seguir.

aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "CompressionType": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000, "EnableStatistics": false }'

Aqui, além dos parâmetros para várias opções padrão de bucket do S3 e do parâmetro DataFormat, os seguintes parâmetros adicionais de arquivo .parquet são definidos:

  • EncodingType: defina uma codificação de dicionário (plain-dictionary) que armazena os valores encontrados em cada coluna em um bloco por coluna da página do dicionário.

  • DictPageSizeLimit: defina um tamanho máximo de página do dicionário de 3 MB.

  • EnableStatistics: desativa o padrão que ativa a coleção de estatísticas sobre páginas de arquivos Parquet e grupos de linhas.

Captura de dados de alteração (CDC), incluindo a ordem de transações no destino do S3.

Por padrão, quando o AWS DMS executa uma tarefa de CDC, ele armazena todas as alterações de linha registradas em log no banco de dados de origem (ou bancos de dados) em um ou mais arquivos para cada tabela. Cada conjunto de arquivos que contêm alterações para a mesma tabela reside em um único diretório de destino associado a essa tabela. O AWS DMS cria tantos diretórios de destino quanto as tabelas de banco de dados migradas para o endpoint de destino do Amazon S3. Os arquivos são armazenados no destino do S3 nesses diretórios, independentemente da ordem da transação. Para obter mais informações sobre as convenções de nomenclatura, o conteúdo e o formato dos dados, consulte Utilizar o Amazon S3 como destino de dados do AWS Database Migration Service.

Para capturar as alterações do banco de dados de origem de uma maneira que também capture a ordem da transação, é possível especificar as configurações do endpoint do S3 que direcionam o AWS DMS a armazenar as alterações de linhas de todas as tabelas do banco de dados em um ou mais arquivos .csv criados, dependendo do tamanho da transação. Esses arquivos de transação .csv contêm todas as alterações de linhas listadas sequencialmente na ordem da transação de todas as tabelas envolvidas em cada transação. Esses arquivos de transação residem juntos em um único diretório de transações que você também especifica no destino do S3. Em cada arquivo de transação, a operação da transação e a identidade do banco de dados e a tabela de origem de cada alteração de linha são armazenadas como parte dos dados da linha, da seguinte maneira.

operation,table_name,database_schema_name,field_value,...

Aqui, operation é a operação da transação na linha alterada, table_name é o nome da tabela do banco de dados em que a linha foi alterada, database_schema_name é o nome do esquema do banco de dados em que a tabela reside e field_value é o primeiro de um ou mais valores de campo que especificam os dados da linha.

O exemplo a seguir de um arquivo de transação mostra as linhas alteradas de uma ou mais transações que envolvem duas tabelas.

I,Names_03cdcad11a,rdsTempsdb,13,Daniel U,Names_03cdcad11a,rdsTempsdb,23,Kathy D,Names_03cdcad11a,rdsTempsdb,13,Cathy I,Names_6d152ce62d,rdsTempsdb,15,Jane I,Names_6d152ce62d,rdsTempsdb,24,Chris I,Names_03cdcad11a,rdsTempsdb,16,Mike

Aqui, a operação da transação em cada linha é indicada por I (inserir), U (atualizar) ou D (excluir) na primeira coluna. O nome da tabela é o valor da segunda coluna (por exemplo, Names_03cdcad11a). O nome do esquema do banco de dados é o valor da terceira coluna (por exemplo, rdsTempsdb). E as colunas restantes são preenchidas com seus próprios dados da linha (por exemplo, 13,Daniel).

Além disso, o AWS DMS nomeia os arquivos de transação que cria no destino do Amazon S3 utilizando um timestamp de acordo com a seguinte convenção de nomenclatura.

CDC_TXN-timestamp.csv

Aqui, timestamp é a hora em que o arquivo de transação foi criado, como no exemplo a seguir.

CDC_TXN-20201117153046033.csv

Esse timestamp no nome do arquivo garante que os arquivos de transação sejam criados e listados na ordem da transação quando você os lista no diretório de transações.

nota

Ao capturar alterações de dados na ordem da transação, o AWS DMS sempre armazena as alterações de linhas em arquivos .csv, independentemente do valor da configuração de DataFormat do S3 no destino. O AWS DMS não salva as alterações de dados na ordem da transação utilizando arquivos .parquet.

Para controlar a frequência de gravações em um destino do Amazon S3 durante uma tarefa de replicação de dados, é possível definir as configurações CdcMaxBatchInterval e CdcMinFileSize. Isso pode resultar em melhor desempenho ao analisar os dados sem operações adicionais de sobrecarga. Para obter mais informações, consulte Configurações de endpoint ao utilizar o Amazon S3 como destino para o AWS DMS.

Como informar ao AWS DMS para armazenar todas as alterações de linhas na ordem da transação
  1. Defina a configuração PreserveTransactions do S3 no destino como true.

  2. Defina a configuração CdcPath do S3 no destino para um caminho de pasta relativo em que você deseja que o AWS DMS armazene os arquivos de transação .csv.

    O AWS DMS cria esse caminho no bucket de destino e no diretório de trabalho padrão do S3 ou no bucket e na pasta do bucket e no bucket que você especifica utilizando as configurações BucketName e BucketFolder do S3 no destino.

Indicar operações de banco de dados de origem em dados migrados do S3

Quando o AWS DMS migra os registros para um destino do S3, ele pode criar um campo adicional em cada registro migrado. Esse campo adicional indica a operação aplicada ao registro no banco de dados de origem. A forma como o AWS DMS cria e define esse primeiro campo depende do tipo da tarefa de migração e das configurações de includeOpForFullLoad, cdcInsertsOnly e cdcInsertsAndUpdates.

Em uma carga máxima, quando includeOpForFullLoad é true, o AWS DMS sempre cria um primeiro campo adicional em cada registro .csv. Esse campo contém a letra I (INSERT) para indicar que a linha foi inserida no banco de dados de origem. Em uma carga de CDC, quando cdcInsertsOnly é false (o padrão), o AWS DMS também sempre cria um primeiro campo adicional em cada registro .csv ou .parquet. Esse campo contém a letra I (INSERT), U (UPDATE) ou D (DELETE) para indicar se a linha foi inserida, atualizada ou excluída no banco de dados de origem.

Na tabela a seguir, é possível ver como as configurações dos atributos includeOpForFullLoad e cdcInsertsOnly funcionam em conjunto e afetam a configuração dos registros migrados.

Com essas configurações de parâmetros O DMS define os registros de destino para a saída .csv e .parquet da seguinte maneira
includeOpForFullLoad cdcInsertsOnly Para carga completa Para carga de CDC
true true O valor do primeiro campo definido como I é adicionado O valor do primeiro campo definido como I é adicionado
false false Nenhum campo é adicionado O valor do primeiro campo definido como I, U ou D é adicionado
false true Nenhum campo é adicionado Nenhum campo é adicionado
true false O valor do primeiro campo definido como I é adicionado O valor do primeiro campo definido como I, U ou D é adicionado

Quando includeOpForFullLoad e cdcInsertsOnly forem definidos com o mesmo valor, os registros de destino serão definidos de acordo com o atributo que controla as configurações de registro para o tipo de migração atual. Esse atributo é includeOpForFullLoad para a carga máxima e cdcInsertsOnly para a carga da CDC.

Quando includeOpForFullLoad e cdcInsertsOnly estão definidos com valores diferentes, o AWS DMS torna as configurações dos registros de destino consistentes para a CDC e para a carga máxima. Isso é feito fazendo com que as configurações de registro de uma carga de CDC com as configurações de qualquer carga máxima anterior especificada por includeOpForFullLoad estejam em conformidade.

Ou seja, suponha que uma carga máxima está configurada para adicionar um primeiro campo para indicar um registro inserido. Nesse caso, um carregamento de CDC seguinte será configurado para adicionar um primeiro campo que indica um registro inserido, atualizado ou excluído de acordo com a origem. Por outro lado, suponha que um carga máxima está configurada para não adicionar um primeiro campo indicando um registro inserido. Nesse caso, uma carga de CDC também será definida para não adicionar um primeiro campo para cada registro, independentemente das operações de registro correspondentes na origem.

Da mesma forma, a maneira como o DMS cria e define um primeiro campo adicional depende das configurações de includeOpForFullLoad e de cdcInsertsAndUpdates. Na tabela a seguir, é possível ver como as configurações dos atributos includeOpForFullLoad e cdcInsertsAndUpdates funcionam em conjunto e afetam a configuração dos registros migrados neste formato.

Com essas configurações de parâmetros O DMS define os registros de destino para a saída .csv da seguinte forma
includeOpForFullLoad cdcInsertsAndUpdates Para carga completa Para carga de CDC
true true O valor do primeiro campo definido como I é adicionado O valor do primeiro campo definido como I ou U
false false Nenhum campo é adicionado O valor do primeiro campo definido como I, U ou D é adicionado
false true Nenhum campo é adicionado O valor do primeiro campo definido como I ou U
true false O valor do primeiro campo definido como I é adicionado O valor do primeiro campo definido como I, U ou D é adicionado

Tipos de dados de destino do S3 Parquet

A tabela a seguir mostra os tipos de dados de destino do Parquet compatíveis ao utilizar o AWS DMS e o mapeamento padrão de tipos de dados do AWS DMS.

Para obter mais informações sobre os tipos de dados do AWS DMS, consulte Tipos de dados do AWS Database Migration Service.

Tipo de dados do AWS DMS

Tipo de dados parquet do S3

BYTES BINARY
DATE DATE32
TIME TIME32
DATETIME TIMESTAMP
INT1 INT8
INT2 INT16
INT4 INT32
INT8 INT64
NUMERIC DECIMAL
REAL4 FLOAT
REAL8 DOUBLE
STRING STRING
UINT1 UINT8
UINT2 UINT16
UINT4 UINT32
UINT8 UINT64
WSTRING STRING
BLOB BINARY
NCLOB STRING
CLOB STRING
BOOLEAN BOOL