Replique alterações de bancos de dados para tabelas do Apache Iceberg usando Amazon Knowledge Firehose (em versão prévia)


Replique alterações de bancos de dados para tabelas do Apache Iceberg usando Amazon Knowledge Firehose (em versão prévia)

Hoje, estamos anunciando a disponibilidade, em versão prévia, de um novo recurso em Amazon Knowledge Firehose que captura alterações feitas em bancos de dados como PostgreSQL e MySQL e reproduction as atualizações para Iceberg Apache mesas em Serviço de armazenamento simples da Amazon (Amazon S3).

Apache Iceberg é um formato de tabela de código aberto de alto desempenho para realizar análises de large information. O Apache Iceberg traz a confiabilidade e a simplicidade das tabelas SQL para information lakes S3 e possibilita que mecanismos analíticos de código aberto, como Apache Faísca, Apache Flink, Trino, Colmeia Apachee Apache Impala trabalhar simultaneamente com os mesmos dados.

Esse novo recurso fornece uma solução simples e completa para transmitir atualizações de banco de dados sem afetar o desempenho das transações dos aplicativos de banco de dados. Você pode configurar um stream do Knowledge Firehose em minutos para entregar captura de dados alterados (CDC) atualizações do seu banco de dados. Agora, você pode replicar facilmente dados de diferentes bancos de dados em tabelas Iceberg no Amazon S3 e usar dados atualizados para análises em grande escala e aplicações de aprendizado de máquina (ML).

Típico Amazon Internet Companies (AWS) os clientes corporativos usam centenas de bancos de dados para aplicativos transacionais. Para realizar análises e ML em larga escala nos dados mais recentes, eles desejam capturar alterações feitas em bancos de dados, como quando registros em uma tabela são inseridos, modificados ou excluídos, e entregar as atualizações ao seu information warehouse ou information lake do Amazon S3 em formatos de tabela de código aberto, como Apache Iceberg.

Para fazer isso, muitos clientes desenvolvem trabalhos de extração, transformação e carregamento (ETL) para leitura periódica de bancos de dados. No entanto, os leitores ETL afetam o desempenho das transações do banco de dados, e os trabalhos em lote podem adicionar várias horas de atraso antes que os dados estejam disponíveis para análise. Para mitigar o impacto no desempenho das transações do banco de dados, os clientes desejam poder transmitir as alterações feitas no banco de dados. Esse fluxo é conhecido como fluxo de captura de dados de alteração (CDC).

Conheci vários clientes que usam sistemas distribuídos de código aberto, como Debéziocom conectores para bancos de dados populares, um Conexão Apache Kafka cluster e Kafka Join Sink para ler os eventos e entregá-los ao destino. A configuração inicial e o teste de tais sistemas envolvem a instalação e configuração de vários componentes de código aberto. Pode levar dias ou semanas. Após a configuração, os engenheiros precisam monitorar e gerenciar clusters e validar e aplicar atualizações de código aberto, o que aumenta a sobrecarga operacional.

Com esse novo recurso de streaming de dados, o Amazon Knowledge Firehose adiciona a capacidade de adquirir e replicar continuamente streams CDC de bancos de dados para tabelas Apache Iceberg no Amazon S3. Você configura um fluxo do Knowledge Firehose especificando a origem e o destino. O Knowledge Firehose captura e reproduction continuamente um instantâneo de dados inicial e, em seguida, todas as alterações subsequentes feitas nas tabelas do banco de dados selecionadas como um fluxo de dados. Para adquirir fluxos CDC, o Knowledge Firehose usa o log de replicação do banco de dados, o que reduz o impacto no desempenho das transações do banco de dados. Quando o quantity de atualizações do banco de dados aumenta ou diminui, o Knowledge Firehose particiona automaticamente os dados e persiste os registros até que sejam entregues ao destino. Você não precisa provisionar capacidade nem gerenciar e ajustar clusters. Além dos dados em si, o Knowledge Firehose pode criar automaticamente tabelas Apache Iceberg usando o mesmo esquema das tabelas de banco de dados como parte da criação inicial do fluxo do Knowledge Firehose e evoluir automaticamente o esquema de destino, como adição de novas colunas, com base nas alterações do esquema de origem .

Como o Knowledge Firehose é um serviço totalmente gerenciado, você não precisa depender de componentes de código aberto, aplicar atualizações de software program ou incorrer em sobrecarga operacional.

A replicação contínua de alterações de banco de dados para tabelas do Apache Iceberg no Amazon S3 usando o Amazon Knowledge Firehose fornece uma solução simples, escalável e gerenciada de ponta a ponta para entregar fluxos de CDC em seu information lake ou information warehouse, onde você pode executar grandes volumes de dados. análise de escala e aplicações de ML.

Vamos ver como configurar um novo pipeline
Para mostrar como criar um novo pipeline de CDC, configurei um fluxo do Knowledge Firehose usando o Console de gerenciamento da AWS. Como sempre, também tenho a opção de usar o Interface de linha de comando da AWS (AWS CLI), SDKs da AWS, AWS CloudFormationou Terraforma.

Para esta demonstração, escolhi um banco de dados MySQL em Serviço de banco de dados relacional da Amazon (Amazon RDS) como fonte. O Knowledge Firehose também funciona com bancos de dados autogerenciados em Amazon Elastic Compute Cloud (Amazon EC2). Para estabelecer conectividade entre minha nuvem privada digital (VPC) — onde o banco de dados está implantado — e a API RDS sem expor o tráfego à Web, crio um AWS PrivateLink Endpoint de serviço VPC. Você pode aprender como criar um endpoint de serviço VPC para API RDS seguindo as instruções do Documentação do Amazon RDS.

Também tenho um bucket S3 para hospedar a tabela Iceberg e tenho um AWS Id and Entry Administration (IAM) configuração de função com permissões corretas. Você pode consultar a lista de pré-requisitos na documentação do Knowledge Firehose.

Para começar, abro o console e navego até a seção Amazon Knowledge Firehose. Posso ver o fluxo já criado. Para criar um novo, eu seleciono Criar fluxo do Firehose.

Criar fluxo Firehose

Eu seleciono um Fonte e Destino. Neste exemplo: um banco de dados MySQL e tabelas Apache Iceberg. Eu também entro em um Nome do fluxo do Firehose para minha transmissão.

Criar fluxo Firehose - tela 1

Eu insiro o nome DNS totalmente qualificado do meu Ponto ultimate do banco de dados e o Nome do serviço do VPC endpoint do banco de dados. eu verifico isso Habilitar SSL é verificado e, sob Nome secretoeu seleciono o nome do segredo em Gerenciador de segredos da AWS onde o nome de usuário e a senha do banco de dados são armazenados com segurança.

Criar fluxo Firehose - tela 2

Em seguida, configuro o Knowledge Firehose para capturar dados específicos especificando bancos de dados, tabelas e colunas usando nomes explícitos ou expressões regulares.

Devo criar uma tabela de marca d’água. Uma marca d’água, neste contexto, é um marcador usado pelo Knowledge Firehose para rastrear o progresso de instantâneos incrementais de tabelas de banco de dados. Ajuda o Knowledge Firehose a identificar quais partes da tabela já foram capturadas e quais partes ainda precisam ser processadas. Posso criar a tabela de marca d’água manualmente ou deixar que o Knowledge Firehose a crie automaticamente para mim. Nesse caso, as credenciais do banco de dados passadas ao Knowledge Firehose devem ter permissões para criar uma tabela no banco de dados de origem.

Criar fluxo Firehose - tela 3

Em seguida, configuro o bucket S3 Região e nome a ser usado. O Knowledge Firehose pode criar automaticamente as tabelas Iceberg quando elas ainda não existem. Da mesma forma, ele pode atualizar o esquema da tabela Iceberg ao detectar uma alteração no esquema do seu banco de dados.

Criar fluxo Firehose - tela 4

Como etapa ultimate, é importante ativar Amazon CloudWatch registro de erros para obter suggestions sobre o progresso do fluxo e eventuais erros. Você pode configurar um curto período de retenção no grupo de logs do CloudWatch para reduzir o custo do armazenamento de logs.

Depois de revisar minha configuração, seleciono Criar fluxo do Firehose.

Criar fluxo do Firehose - tela 5

Assim que o fluxo for criado, ele começará a replicar os dados. Posso monitorar o standing do stream e verificar eventuais erros.

Criar fluxo Firehose - tela 6

Agora é hora de testar o stream.

Abro uma conexão com o banco de dados e insiro uma nova linha em uma tabela.

Mangueira de fogo - MySQL

Em seguida, navego até o bucket S3 configurado como destino e observo que foi criado um arquivo para armazenar os dados da tabela.

Visualizar arquivos parquet no bucket S3

Eu baixo o arquivo e inspeciono seu conteúdo com o parq comando (você pode instalar esse comando com pip set up parquet-cli)

Conteúdo do arquivo Parquet

Claro, baixando e inspecionando Parquete arquivos é algo que faço apenas para demonstrações. Na vida actual, você vai usar Cola AWS e Amazon Atenas para gerenciar seu catálogo de dados e para correr Consultas SQL em seus dados.

Coisas para saber
Aqui estão algumas coisas adicionais que você deve saber.

Esse novo recurso oferece suporte a bancos de dados PostgreSQL e MySQL autogerenciados no Amazon EC2 e aos seguintes bancos de dados no Amazon RDS:

A equipe continuará adicionando suporte para bancos de dados adicionais durante o período de visualização e após a disponibilidade geral. Eles me disseram que já estão trabalhando no suporte aos bancos de dados SQL Server, Oracle e MongoDB.

Dados Firehose usa AWS PrivateLink para se conectar a bancos de dados em seu Nuvem privada digital da Amazon (Amazon VPC).

Ao configurar um fluxo de entrega do Amazon Knowledge Firehose, você pode especificar tabelas e colunas específicas ou usar curingas para especificar uma classe de tabelas e colunas. Ao usar curingas, se novas tabelas e colunas forem adicionadas ao banco de dados após a criação do fluxo do Knowledge Firehose e se corresponderem ao curinga, o Knowledge Firehose criará automaticamente essas tabelas e colunas no destino.

Preço e disponibilidade
O novo recurso de streaming de dados está disponível hoje em todas as regiões da AWS, exceto nas regiões China, AWS GovCloud (EUA) e regiões Ásia-Pacífico (Malásia). Queremos que você avalie esse novo recurso e nos forneça suggestions. Não há cobrança pelo seu uso no início da visualização. Em algum momento no futuro, o preço será baseado no seu uso actual, por exemplo, com base na quantidade de bytes lidos e entregues. Não há compromissos ou investimentos iniciais. Certifique-se de ler a página de preços para obter os detalhes.

Agora, vá configure sua primeira replicação contínua de banco de dados para tabelas Apache Iceberg no Amazon S3 e visite http://aws.amazon.com/firehose.

– seb



Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *