1 / 25

Do PostgreSQL ao data lake

Do PostgreSQL ao data lake. Caso de uso no iFood de streaming de dados com Debezium. Fluxo de dados para o Data lake v1. Problemas?. - cada microsserviço tem seu próprio banco de dados - t empo de conclusão do pg_dump sempre aumenta - a simplicidade foi boa para começar , mas…

jkaren
Download Presentation

Do PostgreSQL ao data lake

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Do PostgreSQL ao data lake Caso de uso no iFood de streaming de dados com Debezium

  2. Fluxo de dados para o Data lake v1

  3. Problemas? - cadamicrosserviço tem seu próprio banco de dados - tempo de conclusão do pg_dump sempre aumenta - a simplicidadefoi boa para começar, mas… - …analistasprecisam dos dados no café da manhã, não no almoço

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

  5. 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

  6. Fluxo de dados para o Data lake v1

  7. Fluxo de dados para o Data lake v2

  8. 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

  9. Fluxo de dados para o Data lake v1

  10. Fluxo de dados para o Data lake v2

  11. Fluxo de dados para o Data lake v3

  12. 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 PostgreSQL

  13. 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

  14. 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( S3 - sink connector).

  15. Preparando o ambiente • Instalação & configuração no Google Cloud • Zookeeper, Kafka (broker), Schema Registry, Rest API, Kafka Connect • PostgreSQL (Decoderbufs) • Debezium • S3 (sink connector) • Passo a passo em medium.com/@singaretti • Streaming de dados (do PostgreSQL) utilizando Kafka|Debezium (v2)

  16. Preparando o ambiente • Instalação & configuração no Google Cloud • Zookeeper, Kafka (broker), Schema Registry, Rest API, Kafka Connect • PostgreSQL (Decoderbufs) • Debezium • S3 (sink connector) • Passo a passo em medium.com/@singaretti • Streaming de dados (do PostgreSQL) utilizando Kafka|Debezium (v2)

  17. PostgreSQL (Decoderbufs) • Decodificação lógica do Write-Ahead Logging (WAL) do PostgreSQL • Configuração de váriasdependências no servidor de banco de dados • Utilizaosprojetos do PostGIS e Protobuf-c • AlternativaaoDecoderbufsé wal2json, em RDS PostgreSQL da AWS

  18. Debezium • Conectordepende do Kafka Connect configurado • Cria slots de replicação no PostgreSQL, monitoramentoéfácil de seraplicado (replicaçãológica) • Existeumagrandequantidade de parametros para seremutilizados no banco de dados, porexemplo, streaming de eventos a nível de banco, schema outabela, e conceitos de whitelist e blacklist, que épossívelpermitir/negarapenas um objeto • gerenciamentoatravés de REST API com curl do Kafka Connect

  19. Debezium • Parâmetros de conexão: "connector.class": "io.debezium.connector.postgresql.PostgresConnector" "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 wal2json) "snapshot.mode": "initial" (ou initial_only / never) "slot.name": "slot_name no postgresql"

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

  21. Demonstração • Inserindo dados no PostgreSQL e visualizando no tópico do Kafka

  22. 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

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

More Related