9 points par GN⁺ 2024-11-04 | 1 commentaires | Partager sur WhatsApp
  • Le moyen le plus simple de déplacer et de transformer des données entre des bases de données PostgreSQL
  • Streaming en temps réel : diffuse les changements de données quasiment en temps réel à l’aide de la réplication logique de PostgreSQL
  • Copie en masse : effectue rapidement la synchronisation initiale des données grâce à une copie en masse parallélisable
  • Transformations puissantes : applique des transformations basées sur des expressions régulières, masque les données sensibles et filtre selon les valeurs de colonnes
  • Routage flexible : réachemine les données de manière fluide entre les tables, y compris vers des tables portant un autre nom ou vers la même table via un mappage de colonnes personnalisé
  • Exemples de règles de transformation
    • Masquage d’adresses e-mail : transforme la colonne d’e-mail avec des caractères de masquage.
    • Formatage des numéros de téléphone : transforme le format des numéros de téléphone à l’aide d’expressions régulières.
  • Routage de tables et mappage de colonnes
    • Routage flexible de tables : réachemine une table d’utilisateurs vers une table de clients, en mappant l’ID et le nom d’utilisateur vers l’ID client et le nom du client.
    • Routage multi-tables : réachemine une table de commandes vers une table de transactions, en mappant l’ID et le montant total vers l’ID de transaction et le montant.
  • Cas d’usage courants
    • Réplication de données en temps réel entre des bases PostgreSQL
    • Mise en place de pipelines ETL avec transformation des données
    • Réacheminement, masquage et filtrage des données
    • Exécution de migrations de base de données sans interruption de service
    • Event streaming depuis PostgreSQL
  • Fonctionnement
    • pg_flo exploite le système de réplication logique de PostgreSQL pour capturer et diffuser les changements de données.
    • Il utilise NATS comme message broker afin de découpler la lecture du WAL des processus de réplication et des workers, pour plus de flexibilité et de scalabilité.
    • Les transformations et le filtrage sont appliqués avant que les données n’atteignent la destination.

1 commentaires

 
GN⁺ 2024-11-04
Avis Hacker News
  • Le projet pg_flo semble très intéressant, en particulier l’archivage vers S3 et la version low-cost de l’outil

    • Des outils comme Debezium permettent de travailler avec de petits volumes de données (Go) plutôt qu’avec de gros volumes (To), ce qui facilite les tests en local
    • Utiliser Kafka et Debezium représente un effort à court terme, et la contrainte est en cours d’évaluation
    • Une autre solution en cours d’évaluation par l’équipe est peerdb
  • Un projet est en cours pour nettoyer les données de la base principale et les archiver vers S3 à l’aide de la réplication logique de PostgreSQL

    • Certaines tables doivent aussi être disponibles sur une instance Postgres secondaire pour les opérations de lecture, ce qui nécessite une réplication
    • Deux types de suppressions dans la base principale posent problème
      • La première suppression sert au nettoyage des données, et on ne souhaite pas qu’elle soit répercutée dans la base répliquée
      • La seconde suppression sert à un rollback et, comme elle modifie l’état des données, elle doit être répliquée
    • Il se demande s’il existe un moyen de distinguer ces deux opérations de suppression afin de ne répliquer que celles liées au rollback
  • Quelqu’un étudie les solutions CDC pour Postgres et se demande si pg_flo pourrait aider

    • Il aimerait qu’on lui explique les modes de défaillance
    • Par exemple, il veut savoir ce qui se passe si le serveur NATS (ou un nœud worker/réplicateur) tombe
    • Il se demande à quel point il est difficile de déplacer les données de Postgres vers ElasticSearch/ClickHouse
  • En espérant que cela puisse devenir une alternative à Debezium

    • Debezium doit d’abord copier l’état CDC complet dans Kafka, et il faut configurer la durée de rétention de Kafka à l’infini, ce qui n’est pas autorisé sur de nombreux systèmes de service Kafka
  • pglogical peut s’exécuter à l’intérieur de Postgres, mais pg_flo semble être un service externe plutôt qu’une extension

    • Cela peut en réalité être un avantage
    • Il se demande s’il serait possible d’utiliser pg_flo avec des instances Postgres as a service comme Azure Postgres, Supabase ou Neon
    • Il se demande s’il peut lire le WAL sans avoir à installer une extension non approuvée par le fournisseur
  • Très impatient d’essayer cet outil

    • Il se demande s’il peut gérer une copie au milieu de coupures réseau ou d’une connectivité instable
  • Il se demande en quoi cela diffère de Sequin

    • Il cherche un outil qui permette des workflows pilotés par des événements CDC tout en pouvant rejouer à la demande un flux d’événements arbitraire
  • Il cherchait un outil similaire, le timing est parfait

    • Il se demande s’il est possible d’effectuer des copies massives (par exemple la nuit) avec diverses transformations, sans faire de streaming continu
  • Il se demande si utiliser la réplication serait préférable à une sauvegarde vers S3

  • Très bel outil