Do Postgre SQL ao data lake Caso de

  • Slides: 25
Download presentation

Do Postgre. SQL ao data lake Caso de uso no i. Food de streaming

Do Postgre. SQL ao data lake Caso de uso no i. Food de streaming de dados com Debezium

Fluxo de dados para o Data lake v 1

Fluxo de dados para o Data lake v 1

Problemas? - cada microsserviço tem seu próprio banco de dados - tempo de conclusão

Problemas? - cada microsserviço tem seu próprio banco de dados - tempo de conclusão do pg_dump sempre aumenta - a simplicidade foi boa para começar, mas… - …analistas precisam dos dados no café da manhã, não no almoço

Kafka, Confluent & Debezium - Kafka (kafka. apache. org) - Projeto do Linked. In

Kafka, Confluent & Debezium - Kafka (kafka. apache. org) - Projeto do Linked. In para dados em tempo real - Confluent (confluent. io) - Plataforma community contém Connectors, Schema Registry e Rest. API - “Fácil de configurar” - Debezium (debezium. io) - Utiliza CDC (change data capture) do banco de dados - Coleta dados armazenados no WAL (Postgre. SQL) semelhante a replicação lógica - Databricks - Plataforma para se trabalhar com Spark, gerenciamento de clusters

Porque essa solução? - a solução não afetaria código ou fluxo de dados de

Porque essa solução? - a solução não afetaria código ou fluxo de dados de produção não seria necessário envolver os DEVs utilizando Avro, facilitaria a vida da equipe de Data (Databricks) solução “fácil” para um DBA Chance de utilizar Kafka, streaming de dados, message broker e KSQL

Fluxo de dados para o Data lake v 1

Fluxo de dados para o Data lake v 1

Fluxo de dados para o Data lake v 2

Fluxo de dados para o Data lake v 2

Problemas com essa solução? - Debezium nunca foi utilizado e é plugado no primário

Problemas com essa solução? - Debezium nunca foi utilizado e é plugado no primário necessário instalar pacotes no servidor de banco de dados oportunidade de reiniciar o servidor(ou errar) igual a zero janela de manutenção pequena

Fluxo de dados para o Data lake v 1

Fluxo de dados para o Data lake v 1

Fluxo de dados para o Data lake v 2

Fluxo de dados para o Data lake v 2

Fluxo de dados para o Data lake v 3

Fluxo de dados para o Data lake v 3

Nova Solução - Ter um passo intermediário entre banco de dados de produção e

Nova Solução - Ter um passo intermediário entre banco de dados de produção e Debezium (Kafka Connect) - Utilizar replicação lógica nativa do Postgre. SQL

Componentes do cluster de Kafka - Zookeeper, monitora os nós do cluster do Kafka

Componentes do cluster de Kafka - Zookeeper, monitora os nós do cluster do Kafka (broker), coordena a distribuição dos processos entre nós - Kafka, responsável por envio distribuído de mensagens em tempo real - Schema Registry, armazena/versiona metadata de schemas Avro - Rest API, permite produzir, consumir e administrar o cluster do Kafka

Componentes do cluster de Kafka - Kafka Connect, um framework para realização de streaming

Componentes do cluster de Kafka - Kafka Connect, um framework para realização de streaming de dados para dentro ou para fora do Kafka. - Conectores de 2 tipos, para enviar dados ao Kafka(Debezium - source connector) e para extrair dados( S 3 - sink connector).

Preparando o ambiente - Instalação & configuração no Google Cloud - Zookeeper, Kafka (broker),

Preparando o ambiente - Instalação & configuração no Google Cloud - Zookeeper, Kafka (broker), Schema Registry, Rest API, Kafka Connect Postgre. SQL (Decoderbufs) Debezium S 3 (sink connector) - Passo a passo em medium. com/@singaretti - Streaming de dados (do Postgre. SQL) utilizando Kafka|Debezium (v 2)

Preparando o ambiente - Instalação & configuração no Google Cloud - Zookeeper, Kafka (broker),

Preparando o ambiente - Instalação & configuração no Google Cloud - Zookeeper, Kafka (broker), Schema Registry, Rest API, Kafka Connect Postgre. SQL (Decoderbufs) Debezium S 3 (sink connector) - Passo a passo em medium. com/@singaretti - Streaming de dados (do Postgre. SQL) utilizando Kafka|Debezium (v 2)

Postgre. SQL (Decoderbufs) - Decodificação lógica do Write-Ahead Logging (WAL) do Postgre. SQL -

Postgre. SQL (Decoderbufs) - Decodificação lógica do Write-Ahead Logging (WAL) do Postgre. SQL - Configuração de várias dependências no servidor de banco de dados - Utiliza os projetos do Post. GIS e Protobuf-c - Alternativa ao Decoderbufs é wal 2 json, em RDS Postgre. SQL da AWS

Debezium - Conector depende do Kafka Connect configurado - Cria slots de replicação no

Debezium - Conector depende do Kafka Connect configurado - Cria slots de replicação no Postgre. SQL, monitoramento é fácil de ser aplicado (replicação lógica) - Existe uma grande quantidade de parametros para serem utilizados no banco de dados, por exemplo, streaming de eventos a nível de banco, schema ou tabela, e conceitos de whitelist e blacklist, que é possível permitir/negar apenas um objeto - gerenciamento através de REST API com curl do Kafka Connect

Debezium - Parâmetros de conexão: "connector. class": "io. debezium. connector. postgresql. Postgres. Connector" "database.

Debezium - Parâmetros de conexão: "connector. class": "io. debezium. connector. postgresql. Postgres. Connector" "database. hostname": "dns/ip_do_servidor" "database. user": "usuario_do_banco_de_dados" "database. dbname" : "nome_do_seu_banco_de_dados" "database. server. name": "nome_para_compor_o_nome_do_topico" "schema. whitelist": "schema_do_seu_banco_de_dados" "plugin. name": "decoderbufs" (ou wal 2 json) "snapshot. mode": "initial" (ou initial_only / never) "slot. name": "slot_name no postgresql"

S 3 (sink connector) - Conector já embutido no Kafka Connect distribuído pela Confluent

S 3 (sink connector) - Conector já embutido no Kafka Connect distribuído pela Confluent - Envia todas as mensagens de um determinado tópico para o S 3 criando um diretório no bucket com o nome do tópico - É possível segmentar diretórios por data

Demonstração - Inserindo dados no Postgre. SQL e visualizando no tópico do Kafka

Demonstração - Inserindo dados no Postgre. SQL e visualizando no tópico do Kafka

Ganhos com o novo fluxo - Redução de processamento (dump+envio) do data lake de

Ganhos com o novo fluxo - Redução de processamento (dump+envio) do data lake de 80% - Possibilidade de analisar dados H-1 - Kafka Connect com diversos plugins(sink) que permite outros destinos - KSQL, agregador de dados em tempo real a partir de tópicos do Kafka - Iniciar novos projetos com Kafka

Obrigado! Paulo Singaretti medium. com/@singaretti linkedin. com/in/singaretti

Obrigado! Paulo Singaretti medium. com/@singaretti linkedin. com/in/singaretti