/

PeerDB

Filament vs. PeerDB

Side-by-side capabilities and benchmarks.

Introduction

PeerDB is a change data capture tool built for Postgres. It replicates from Postgres, mainly into ClickHouse, and it is now owned by ClickHouse with a hosted version inside ClickHouse Cloud. Filament is an open-source replication engine that replicates from Postgres and MySQL into Postgres, MySQL, ClickHouse, Iceberg, and S3, and is not tied to one destination.

HIGHLIGHTS

3.6× faster

WALL TIME

Filament

114.8 SEC

PeerDB

415.2 SEC

NYC Taxi, Postgres → Postgres

3.6× faster

WALL TIME

Filament

114.8 SEC

PeerDB

415.2 SEC

NYC Taxi, Postgres → Postgres

4.8× faster

WALL TIME

Filament

3.79 SEC

PeerDB

18.18 SEC

TPC-H, Postgres -> Postgres

4.8× faster

WALL TIME

Filament

3.79 SEC

PeerDB

18.18 SEC

TPC-H, Postgres -> Postgres

8.7× LESS

CPU SECONDS

Filament

377.4 SEC

PeerDB

3,270.0 SEC

NYC Taxi, Postgres -> Postgres

8.7× LESS

CPU SECONDS

Filament

377.4 SEC

PeerDB

3,270.0 SEC

NYC Taxi, Postgres -> Postgres

8.1× LESS

CPU SECONDS

Filament

17.9 SEC

PeerDB

145.3 SEC

TPC-H, Postgres -> Postgres

8.1× LESS

CPU SECONDS

Filament

17.9 SEC

PeerDB

145.3 SEC

TPC-H, Postgres -> Postgres

Galaxy product illustration

License and control

License

Apache 2.0, open source.

AGPL 3.0 since January 2026. Elastic License 2.0 before that. Copyleft applies to network use.

License

Apache 2.0, open source.

AGPL 3.0 since January 2026. Elastic License 2.0 before that. Copyleft applies to network use.

Self-hosted in full

Yes. One repository, no paid tier, nothing gated.

Yes. The hosted product is ClickPipes in ClickHouse Cloud. PeerDB Cloud now redirects to GitHub.

Self-hosted in full

Yes. One repository, no paid tier, nothing gated.

Yes. The hosted product is ClickPipes in ClickHouse Cloud. PeerDB Cloud now redirects to GitHub.

Adding a new source

A YAML manifest for REST APIs, loaded at runtime with no rebuild. A Go driver for databases and other driver-based sources.

Go and TypeScript changes inside the monorepo. No plugin or SDK. Docs say to email the team.

Adding a new source

A YAML manifest for REST APIs, loaded at runtime with no rebuild. A Go driver for databases and other driver-based sources.

Go and TypeScript changes inside the monorepo. No plugin or SDK. Docs say to email the team.

Connector maintenance

Every connector lives in the engine repository with a published maturity level (alpha, beta, stable).

5 sources maintained. 2 destinations maintained (ClickHouse, Postgres). Snowflake, BigQuery, S3, Kafka, Pub/Sub, Event Hubs, Elasticsearch deprecated July 2026.

Connector maintenance

Every connector lives in the engine repository with a published maturity level (alpha, beta, stable).

5 sources maintained. 2 destinations maintained (ClickHouse, Postgres). Snowflake, BigQuery, S3, Kafka, Pub/Sub, Event Hubs, Elasticsearch deprecated July 2026.

Services to operate

Server and control plane, with Postgres and NATS. Each run is its own Kubernetes Job. One binary for evaluation.

10 containers in the compose stack. Catalog Postgres, Temporal, Temporal admin tools, Temporal UI, flow API, flow worker, snapshot worker, server, UI, MinIO.

Services to operate

Server and control plane, with Postgres and NATS. Each run is its own Kubernetes Job. One binary for evaluation.

10 containers in the compose stack. Catalog Postgres, Temporal, Temporal admin tools, Temporal UI, flow API, flow worker, snapshot worker, server, UI, MinIO.

Runtime

Static Go binaries on distroless images. One runner code path wherever a run executes.

Go workers, a Rust SQL layer, a Next.js UI, Temporal for orchestration. Helm defaults ask 2 to 4 CPU and 8 GiB per flow worker.

Runtime

Static Go binaries on distroless images. One runner code path wherever a run executes.

Go workers, a Rust SQL layer, a Next.js UI, Temporal for orchestration. Helm defaults ask 2 to 4 CPU and 8 GiB per flow worker.

Scheduling

Built-in cron per pipeline. Safe to run multiple control planes.

No cron. Continuous mirrors flush on a sync interval or batch size. One-off loads by flag.

Scheduling

Built-in cron per pipeline. Safe to run multiple control planes.

No cron. Continuous mirrors flush on a sync interval or batch size. One-off loads by flag.

SaaS source execution

Manifests interpreted inside the engine, in the same process as the run. No per-connector containers.

None. Databases only.

SaaS source execution

Manifests interpreted inside the engine, in the same process as the run. No per-connector containers.

None. Databases only.

Embeddable

Yes. Go library (app.Run) with swappable event bus, state store, and secrets.

No.

Embeddable

Yes. Go library (app.Run) with swappable event bus, state store, and secrets.

No.

Interfaces

Web UI, ConnectRPC API, CLI.

Web UI, a Postgres-wire SQL layer for CREATE MIRROR, gRPC and HTTP API.

Interfaces

Web UI, ConnectRPC API, CLI.

Web UI, a Postgres-wire SQL layer for CREATE MIRROR, gRPC and HTTP API.

Correctness

Resume after failure

Mid-table, from per-shard checkpoints, for upsert, incremental, and CDC runs. A failed run lands in a partial state and continues on re-request.

Per-partition state during the initial load. If the snapshot worker restarts, the initial load fails and needs a resync. CDC resumes from the slot.

Resume after failure

Mid-table, from per-shard checkpoints, for upsert, incremental, and CDC runs. A failed run lands in a partial state and continues on re-request.

Per-partition state during the initial load. If the snapshot worker restarts, the initial load fails and needs a resync. CDC resumes from the slot.

Per-batch integrity check

CRC32-C computed independently on the read side and the write side of every batch. A mismatch fails the run.

None. A row-count API exists for Postgres-to-Postgres mirrors only, approximate above 10 GB. No checksum.

Per-batch integrity check

CRC32-C computed independently on the read side and the write side of every batch. A mismatch fails the run.

None. A row-count API exists for Postgres-to-Postgres mirrors only, approximate above 10 GB. No checksum.

Change data capture

Native. Postgres logical replication (pgoutput) with a consistent snapshot bootstrap. MySQL binlog with GTID cursors.

Its core. Postgres pgoutput, MySQL binlog, MongoDB change streams, CockroachDB changefeeds, with built-in slot heartbeats.

Change data capture

Native. Postgres logical replication (pgoutput) with a consistent snapshot bootstrap. MySQL binlog with GTID cursors.

Its core. Postgres pgoutput, MySQL binlog, MongoDB change streams, CockroachDB changefeeds, with built-in slot heartbeats.

Schema drift

New columns added to the destination automatically. Add-only, nothing dropped, nothing rewritten.

Added columns propagate. Drops, renames, and type changes do not, and a type change can fail the sync. New tables need an edit, bigger changes a resync.

Schema drift

New columns added to the destination automatically. Add-only, nothing dropped, nothing rewritten.

Added columns propagate. Drops, renames, and type changes do not, and a type change can fail the sync. New tables need an edit, bigger changes a resync.

Parallel reads within a table

Yes. Large tables split into up to 64 shards (keyset, bitmap, or ctid) read concurrently.

Yes. ctid partitions across snapshot_max_parallel_workers, which defaults to 1.

Parallel reads within a table

Yes. Large tables split into up to 64 shards (keyset, bitmap, or ctid) read concurrently.

Yes. ctid partitions across snapshot_max_parallel_workers, which defaults to 1.

Destinations

Postgres, MySQL, ClickHouse, Iceberg, S3.

ClickHouse and Postgres maintained. No Iceberg.

Destinations

Postgres, MySQL, ClickHouse, Iceberg, S3.

ClickHouse and Postgres maintained. No Iceberg.

Cost

What drives billing

Nothing. Compute you already run.

Nothing for the software. ClickPipes bills $0.10 to $0.20 per compute hour per service, plus $0.10 per GB for initial loads and $0.20 per GB for CDC.

What drives billing

Nothing. Compute you already run.

Nothing for the software. ClickPipes bills $0.10 to $0.20 per compute hour per service, plus $0.10 per GB for initial loads and $0.20 per GB for CDC.

Paid tiers

None.

ClickPipes in ClickHouse Cloud. Destinations are ClickHouse Cloud and, in beta since June 2026, ClickHouse's managed Postgres.

Paid tiers

None.

ClickPipes in ClickHouse Cloud. Destinations are ClickHouse Cloud and, in beta since June 2026, ClickHouse's managed Postgres.

Comparison

Benchmarks

Benchmarks

benchmark

Wall time

Wall time

Wall time

Filament

PeerDB

298M rows · PG → PG

114.8 s

415.2 s

8.7M rows in 8 tables · PG → PG

3.79 s

18.18 s

Rows per second

Rows per second

Rows per second

Filament

Filament

PeerDB

PeerDB

Better

NYC Taxi, PG → PG

NYC Taxi, PG → PG

2,597,498

2,597,498

2,597,498

718,368

718,368

718,368

Filament 3.62×

TPC-H, PG → PG

TPC-H, PG → PG

2,288,144

2,288,144

2,288,144

476,372

476,372

476,372

Filament 4.80×

CPU seconds

CPU seconds

CPU seconds

Filament

Filament

PeerDB

PeerDB

Better

298M rows · PG → PG

377.4

377.4

377.4

3,270.0

3,270.0

3,270.0

Filament 8.7×

8.7M rows in 8 tables · PG → PG

17.9

17.9

17.9

145.3

145.3

145.3

Filament 8.1×

Peak memory, largest container

Peak memory, largest container

Peak memory, largest container

Filament

PeerDB

NYC Taxi, PG → PG

2.97 GiB

0.74 GiB

TPC-H, PG → PG

1.83 GiB

0.22 GiB

Last updated on August 31, 2026

Full Filament vs. PeerDB benchmark report

Full Filament vs. PeerDB benchmark report

Full Filament vs. PeerDB benchmark report

Migrate to

Migrate to

Copyright © 2026 Galaxy. All rights reserved.