PostgreSQL Logical Replication Explained

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • debezium

    Change data capture for a variety of databases. Please log issues at https://issues.redhat.com/browse/DBZ.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • pg-logical-replication

    PostgreSQL Logical Replication client for node.js

    > Logical replication is also great for replicating to other systems - for example Debezium [1] that writes all changes to a Kafka stream.

    So I'm looking for a Rust library (or a C library) that receives a Postgres logical replication stream and is compatible with Postgres 15, does you know of something?

    Debezium is unfortunately written in Java, and I think your Powersync is proprietary right? (I didn't find a Github link). I can find stuff like https://www.npmjs.com/package/pg-logical-replication but again, it's Javascript.

  • logicaldecoding

    For C there should be good options.

    For Rust it doesn't appear that well-supported.

    A very simple approach is to poll for changes using `pg_logical_slot_get_changes()` - that should work with any driver. That's what I used for my initial experimentation, before switching over to the streaming replication protocol for better performance.

    The streaming replication protocol is not that complicated, but currently you'll have to handle some of the low-level protocol yourself, or work with some very experimental implementations. There's a project to help get you started at [1], and some more discussion at [2].

    For the logical decoder, wal2json is quite nice to experiment with, but I've found pgoutput is not that complicated and gives you something closer to the raw data.

    [1]: https://github.com/seddonm1/logicaldecoding/

    [2]: https://github.com/sfackler/rust-postgres/issues/116

  • rust-postgres

    Native PostgreSQL driver for the Rust programming language

    For C there should be good options.

    For Rust it doesn't appear that well-supported.

    A very simple approach is to poll for changes using `pg_logical_slot_get_changes()` - that should work with any driver. That's what I used for my initial experimentation, before switching over to the streaming replication protocol for better performance.

    The streaming replication protocol is not that complicated, but currently you'll have to handle some of the low-level protocol yourself, or work with some very experimental implementations. There's a project to help get you started at [1], and some more discussion at [2].

    For the logical decoder, wal2json is quite nice to experiment with, but I've found pgoutput is not that complicated and gives you something closer to the raw data.

    [1]: https://github.com/seddonm1/logicaldecoding/

    [2]: https://github.com/sfackler/rust-postgres/issues/116

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Neon – Serverless Postgres

    11 projects | news.ycombinator.com | 27 May 2022
  • Show HN: Outerbase Studio – Open-Source Database GUI

    19 projects | news.ycombinator.com | 4 Dec 2024
  • Show HN: Generate type-safe code for SQL queries in any language

    2 projects | news.ycombinator.com | 27 Nov 2024
  • DbGate: The Smartest SQL+noSQL Database Client

    1 project | news.ycombinator.com | 25 Nov 2024
  • Postgres can do that? No surprise Postgres is everywhere

    7 projects | dev.to | 13 Nov 2024