9 Punkte von GN⁺ 2024-11-04 | 1 Kommentare | Auf WhatsApp teilen
  • Bietet die einfachste Möglichkeit, Daten zwischen PostgreSQL-Datenbanken zu verschieben und zu transformieren
  • Echtzeit-Streaming: Nutzt die logische Replikation von PostgreSQL, um Datenänderungen nahezu in Echtzeit zu streamen
  • Bulk Copy: Führt die anfängliche Datensynchronisierung schnell mit parallelisierbarer Massenkopie durch
  • Leistungsstarke Transformationen: Wendet regexbasierte Transformationen an, maskiert sensible Daten und filtert anhand von Spaltenwerten
  • Flexibles Routing: Routet Daten nahtlos zwischen Tabellen, auch zu Tabellen mit anderem Namen oder zur selben Tabelle mit benutzerdefiniertem Spalten-Mapping
  • Beispiele für Transformationsregeln
    • Maskierung von E-Mail-Adressen: Wandelt die E-Mail-Spalte in Maskierungszeichen um.
    • Formatierung von Telefonnummern: Ändert das Telefonnummernformat mithilfe regulärer Ausdrücke.
  • Tabellenrouting und Spalten-Mapping
    • Flexibles Tabellenrouting: Routet die Benutzertabelle zur Kundentabelle und mappt ID und Benutzername auf Kunden-ID und Kundenname.
    • Routing auf mehrere Tabellen: Routet die Bestelltabelle zur Transaktionstabelle und mappt ID und Gesamtbetrag auf Transaktions-ID und Betrag.
  • Typische Anwendungsfälle
    • Echtzeit-Datenreplikation zwischen PostgreSQL-Datenbanken
    • Aufbau von ETL-Pipelines mit Datentransformation
    • Daten-Neurouting, Maskierung und Filterung
    • Durchführung von Datenbankmigrationen ohne Downtime
    • Event-Streaming aus PostgreSQL
  • Funktionsweise
    • pg_flo nutzt das logische Replikationssystem von PostgreSQL, um Datenänderungen zu erfassen und zu streamen.
    • Verwendet NATS als Message Broker, um das Lesen aus dem WAL von den Replikator- und Worker-Prozessen zu entkoppeln und so Flexibilität und Skalierbarkeit zu bieten.
    • Transformationen und Filterung werden angewendet, bevor die Daten das Ziel erreichen.

1 Kommentare

 
GN⁺ 2024-11-04
Hacker-News-Kommentare
  • Das pg_flo-Projekt wirkt sehr interessant, insbesondere die Archivierung nach S3 und die günstigere Tool-Variante sind attraktiv

    • Tools wie Debezium können mit kleineren Datenmengen (GBs statt TBs) arbeiten, was lokale Tests erleichtert
    • Die Nutzung von Kafka und Debezium ist ein kurzfristiger Aufwand, und der Aufwand/Nutzen wird gerade bewertet
    • Eine weitere Lösung, die das Team evaluiert, ist peerdb
  • Ich arbeite an einem Projekt, das mithilfe der logischen Replikation von PostgreSQL Daten aus der Hauptdatenbank bereinigt und nach S3 archiviert

    • Einige Tabellen müssen für Lesezugriffe auf einer sekundären Postgres-Instanz verfügbar sein, wofür Replikation nötig ist
    • Zwei Arten von Löschvorgängen in der Hauptdatenbank sind dabei problematisch
      • Die erste Löschung dient der Datenbereinigung und soll sich nicht in der replizierten Datenbank widerspiegeln
      • Die zweite Löschung dient einem Rollback und verändert den Datenzustand, daher sollte sie repliziert werden
    • Ich frage mich, ob es eine Möglichkeit gibt, diese beiden Löschvorgänge zu unterscheiden, sodass nur Rollback-Löschungen repliziert werden
  • Ich untersuche Postgres-CDC-Lösungen und frage mich, ob pg_flo dabei helfen könnte

    • Könnte jemand die Failure-Modes erklären?
    • Zum Beispiel würde ich gern wissen, was passiert, wenn ein NATS-Server- (oder Worker-/Replicator-) Knoten ausfällt
    • Ich frage mich, wie schwierig es ist, Daten von Postgres nach ElasticSearch/ClickHouse zu verschieben
  • Hoffentlich kann es eine Alternative zu Debezium werden

    • Debezium muss anfangs den gesamten CDC-Status nach Kafka kopieren, und dafür muss die Kafka-Aufbewahrungszeit auf unendlich gesetzt werden, was in vielen Kafka-Service-Systemen nicht erlaubt ist
  • pglogical kann innerhalb von Postgres laufen, aber pg_flo scheint ein externer Service statt einer Erweiterung zu sein

    • Das könnte tatsächlich ein Vorteil sein
    • Ich frage mich, ob man pg_flo mit Postgres-as-a-Service-Instanzen wie Azure Postgres, Supabase oder Neon verwenden kann
    • Ich frage mich, ob es WAL lesen kann, ohne dass man nicht vom Anbieter genehmigte Erweiterungen installieren muss
  • Ich freue mich sehr darauf, dieses Tool auszuprobieren

    • Ich frage mich, ob es Kopiervorgänge auch bei unterbrochener/instabiler Netzwerkverbindung zwischendrin verarbeiten kann
  • Mich würde interessieren, wie es sich im Vergleich zu Sequin unterscheidet

    • Ich suche ein Tool, das CDC-ereignisbasierte Workflows ermöglicht und zugleich beliebige Event-Streams bei Bedarf erneut abspielen kann
  • Ich habe nach einem ähnlichen Tool gesucht, perfektes Timing

    • Ich frage mich, ob Mass Copies (z. B. nachts) mit verschiedenen Transformationen unterstützt werden, ohne kontinuierlich zu streamen
  • Ich frage mich, ob Replikation besser ist als ein Backup nach S3

  • Ein sehr cooles Tool