Do Postgre SQL ao data lake Caso de
- Slides: 25
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
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 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 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 2
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 2
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 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 (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 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), 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), 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 - 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 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. 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 - 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
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
- Pronounce postgre
- Postgre
- Postgre
- Tehran hash download
- Oligotrophic vs eutrophic lakes
- Lake powell and lake mead
- Lake powell and lake mead
- Set serveroutput on
- Sql developer real time sql monitor
- Sophos data lake
- Dama chicago
- Atlas data lake
- Metadata driven ingestion framework
- Data lake power bi
- Sql and relational databases 101 answers
- Iddls
- Elementos de un caso de uso
- Pronome de cacique
- Pronomes retos e oblíquos
- Teoría del caso ejemplo
- Taylor resolve um problema
- Caso cs790
- Farsa y justicia del corregidor análisis
- Caso fortuito
- Champinha caso
- Registros de habla ejemplos