Because logic built postgresql replication following drawbacks:
- It supports only ordinary table as a replication target
- Copying data not filtered, so that death occurs during each copy cycle between two rooms
- No Table Name Mapping
- No conflict resolution mechanisms
pgcat made the following enhancements:
- Support for all table types, including view, fdw, partition table, citus distributed tables, etc.
- Just copy locally generated data changes, so that security can be replicated across the room
- Table name mapping, you can map multiple source table to a target table
- The optional last-writer-win (similar Cassandra) conflict resolution mechanism (implemented by trigger)
- Save the copy progress to a separate table, so that progress can failover
pgcat reuse postgresql built pgoutput ouput plugin and publication, use golang rewrite the subscription part of a separate process to run.