9 pontos por GN⁺ 2024-11-04 | 1 comentários | Compartilhar no WhatsApp
  • Oferece a maneira mais fácil de mover e transformar dados entre bancos de dados PostgreSQL
  • Streaming em tempo real: transmite alterações de dados quase em tempo real usando replicação lógica do PostgreSQL
  • Cópia em massa: realiza rapidamente a sincronização inicial de dados com cópia em massa paralelizável
  • Transformações poderosas: aplica transformações com base em expressões regulares, mascara dados sensíveis e filtra de acordo com os valores das colunas
  • Roteamento flexível: roteia dados entre tabelas de forma fluida, inclusive para tabelas com nomes diferentes ou para a mesma tabela por meio de mapeamento personalizado de colunas
  • Exemplos de regras de transformação
    • Mascaramento de endereços de e-mail: converte a coluna de e-mail em caracteres de mascaramento.
    • Formatação de números de telefone: altera o formato de números de telefone usando expressões regulares.
  • Roteamento de tabelas e mapeamento de colunas
    • Roteamento flexível de tabelas: roteia a tabela de usuários para a tabela de clientes, mapeando ID e nome de usuário para ID do cliente e nome do cliente.
    • Roteamento para múltiplas tabelas: roteia a tabela de pedidos para a tabela de transações, mapeando ID e valor total para ID da transação e valor.
  • Casos de uso comuns
    • Replicação de dados em tempo real entre bancos de dados PostgreSQL
    • Construção de pipelines ETL com transformação de dados
    • Redirecionamento, mascaramento e filtragem de dados
    • Execução de migrações de banco de dados sem downtime
    • Streaming de eventos a partir do PostgreSQL
  • Como funciona
    • O pg_flo aproveita o sistema de replicação lógica do PostgreSQL para capturar e transmitir alterações de dados.
    • Usa o NATS como message broker, separando a leitura do WAL dos processos de replicação e dos workers para oferecer flexibilidade e escalabilidade.
    • As transformações e a filtragem são aplicadas antes de os dados chegarem ao destino.

1 comentários

 
GN⁺ 2024-11-04
Comentários do Hacker News
  • O projeto pg_flo parece muito interessante, especialmente o arquivamento para S3 e a versão mais barata da ferramenta

    • Ferramentas como o Debezium permitem trabalhar com pequenos volumes de dados (GBs) em vez de grandes volumes (TBs), o que facilita os testes locais
    • Usar Kafka e Debezium é um esforço de curto prazo, e estou avaliando se a complicação vale a pena
    • Outra solução que a equipe está avaliando é o peerdb
  • Estou trabalhando em um projeto que usa replicação lógica do PostgreSQL para limpar dados do banco de dados principal e arquivá-los no S3

    • Algumas tabelas precisam continuar disponíveis para leitura em uma instância Postgres secundária, e nesse caso a replicação é necessária
    • Há dois tipos de exclusão no banco de dados principal que são um problema
      • A primeira exclusão é para limpeza de dados, e eu não quero que ela seja refletida no banco de dados replicado
      • A segunda exclusão é para rollback, e como altera o estado dos dados, ela deve ser replicada
    • Gostaria de saber se existe alguma forma de distinguir esses dois tipos de exclusão para replicar apenas as exclusões de rollback
  • Estou pesquisando soluções de CDC para Postgres e queria saber se o pg_flo poderia ajudar

    • Gostaria de saber se vocês podem explicar os modos de falha
    • Por exemplo, quero saber o que acontece se o servidor NATS (ou o nó worker/replicador) cair
    • Também queria saber o quão difícil é mover dados do Postgres para ElasticSearch/ClickHouse
  • Espero que possa ser uma alternativa ao Debezium

    • O Debezium precisa primeiro copiar todo o estado inicial de CDC para o Kafka, e o tempo de retenção do Kafka precisa ser definido como infinito, o que não é permitido em muitos sistemas de serviço Kafka
  • O pglogical pode rodar dentro do Postgres, mas o pg_flo parece ser um serviço externo, não uma extensão

    • Isso pode ser uma vantagem na prática
    • Gostaria de saber se é possível usar o pg_flo com instâncias Postgres como serviço, como Azure Postgres, Supabase e Neon
    • Gostaria de saber se ele consegue ler o WAL sem precisar instalar extensões não aprovadas pelo fornecedor
  • Estou muito animado para experimentar esta ferramenta

    • Gostaria de saber se ela consegue lidar com cópia no meio de interrupções/instabilidades de conexão de rede
  • Queria saber como ele se diferencia do Sequin

    • Estou procurando uma ferramenta que permita workflows baseados em eventos de CDC, mas que também possibilite reproduzir arbitrariamente o stream de eventos sob demanda
  • Eu estava procurando uma ferramenta parecida, então o timing é perfeito

    • Gostaria de saber se ela suporta fazer cópias em massa (por exemplo, à noite) com várias transformações, sem fazer streaming contínuo
  • Gostaria de saber se usar replicação é melhor do que fazer backup no S3

  • Ferramenta muito legal