/

Debezium

Filament vs. Debezium

Side-by-side capabilities and benchmarks.

Introduction

Debezium is a change data capture tool. It reads database transaction logs and streams every change as an event, usually into Kafka. It is widely used and widely embedded, and it leaves the initial load, the destination tables, and the surrounding infrastructure to you. Filament is an open-source replication engine that handles the initial load and the ongoing changes in one engine, writes typed tables at the destination, and needs no Kafka to do it.

HIGHLIGHTS

59.8× FASTER

ROWS PER SECOND

Filament

2,288,144 ROWS

Debezium

38,283 ROWS

TPC-H, Postgres -> Postgres

59.8× FASTER

ROWS PER SECOND

Filament

2,288,144 ROWS

Debezium

38,283 ROWS

TPC-H, Postgres -> Postgres

57.1× FASTER

WALL TIME

Filament

114.8 S

Debezium

6,558.9 S

NYC Taxi, Postgres -> Postgres

57.1× FASTER

WALL TIME

Filament

114.8 S

Debezium

6,558.9 S

NYC Taxi, Postgres -> Postgres

30.9× less

CPU SECONDS

Filament

377.4 SEC

Debezium

11,658.4 SEC

NYC Taxi, Postgres -> Postgres

30.9× less

CPU SECONDS

Filament

377.4 SEC

Debezium

11,658.4 SEC

NYC Taxi, Postgres -> Postgres

5.3× less

PEAK MEMORY

Filament

2.97 GIB

Debezium

15.7 GIB

NYC Taxi, Postgres -> Postgres

5.3× less

PEAK MEMORY

Filament

2.97 GIB

Debezium

15.7 GIB

NYC Taxi, Postgres -> Postgres

Galaxy product illustration

License and control

License

Apache 2.0, open source.

Apache 2.0, open source. Commonhaus Foundation, core team at IBM.

License

Apache 2.0, open source.

Apache 2.0, open source. Commonhaus Foundation, core team at IBM.

Self-hosted in full

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

Yes. No hosted offering from the project. Red Hat sells a supported build.

Self-hosted in full

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

Yes. No hosted offering from the project. Red Hat sells a supported build.

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.

Java. A new connector is a Kafka Connect SourceConnector built on debezium-core. No public connector SPI yet.

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.

Java. A new connector is a Kafka Connect SourceConnector built on debezium-core. No public connector SPI yet.

Connector maintenance

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

6 source connectors in the core repository. 9 more in separate repositories, several marked incubating. 2 sinks.

Connector maintenance

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

6 source connectors in the core repository. 9 more in separate repositories, several marked incubating. 2 sinks.

Services to operate

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

Kafka Connect mode needs a Kafka cluster, KRaft controllers, and a Connect worker cluster, typically 5 to 9 JVM processes, plus a schema registry for Avro. Debezium Server is one JVM per connector with an external offset store.

Services to operate

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

Kafka Connect mode needs a Kafka cluster, KRaft controllers, and a Connect worker cluster, typically 5 to 9 JVM processes, plus a schema registry for Avro. Debezium Server is one JVM per connector with an external offset store.

Runtime

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

JVM. Java 17 or later for connectors, 21 or later for Debezium Server. Default 256 MB heap sized for under 10,000 columns.

Runtime

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

JVM. Java 17 or later for connectors, 21 or later for Debezium Server. Default 256 MB heap sized for under 10,000 columns.

Scheduling

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

None. Continuous streaming only. Ad hoc snapshots are triggered by signals.

Scheduling

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

None. Continuous streaming only. Ad hoc snapshots are triggered by signals.

SaaS source execution

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

None. Database transaction logs only.

SaaS source execution

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

None. Database transaction logs only.

Embeddable

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

Yes. Debezium Engine embeds in a Java application. Documented as less fault tolerant than the full Kafka deployment.

Embeddable

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

Yes. Debezium Engine embeds in a Java application. Documented as less fault tolerant than the full Kafka deployment.

Interfaces

Web UI, ConnectRPC API, CLI.

Kafka Connect REST API, properties files, Kubernetes operator, and a dbz CLI since 3.6. The Debezium UI was archived in September 2025. Its replacement, the Management Platform, is incubating.

Interfaces

Web UI, ConnectRPC API, CLI.

Kafka Connect REST API, properties files, Kubernetes operator, and a dbz CLI since 3.6. The Debezium UI was archived in September 2025. Its replacement, the Management Platform, is incubating.

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.

Streaming resumes from stored offsets. An interrupted initial snapshot starts over.

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.

Streaming resumes from stored offsets. An interrupted initial snapshot starts over.

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. At-least-once delivery. Exactly-once only in Kafka Connect distributed mode, with open correctness caveats in the docs.

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. At-least-once delivery. Exactly-once only in Kafka Connect distributed mode, with open correctness caveats in the docs.

Change data capture

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

Its core. Log-based capture for 15 databases including Postgres, MySQL, Oracle, SQL Server, MongoDB, Db2.

Change data capture

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

Its core. Log-based capture for 15 databases including Postgres, MySQL, Oracle, SQL Server, MongoDB, Db2.

Schema drift

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

Source DDL tracked in a schema history topic for MySQL, Oracle, SQL Server, and Db2. Postgres logical decoding emits no DDL. JDBC sink adds new columns in basic mode and is prohibited from type changes, drops, or key changes.

Schema drift

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

Source DDL tracked in a schema history topic for MySQL, Oracle, SQL Server, and Db2. Postgres logical decoding emits no DDL. JDBC sink adds new columns in basic mode and is prohibited from type changes, drops, or key changes.

Parallel reads within a table

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

Yes since 3.5 (March 2026). Chunked snapshots across snapshot.max.threads, 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 since 3.5 (March 2026). Chunked snapshots across snapshot.max.threads, which defaults to 1.

Typed destination tables

Yes. Native column types, primary keys, and NOT NULL derived from the source schema.

Only through a sink. Every row is a change-event envelope until a JDBC or Iceberg sink unpacks it.

Typed destination tables

Yes. Native column types, primary keys, and NOT NULL derived from the source schema.

Only through a sink. Every row is a change-event envelope until a JDBC or Iceberg sink unpacks it.

Cost

What drives billing

Nothing. Compute you already run.

Nothing for the software. The Kafka cluster, Connect workers, and JVM heaps you run to keep it durable.

What drives billing

Nothing. Compute you already run.

Nothing for the software. The Kafka cluster, Connect workers, and JVM heaps you run to keep it durable.

Paid tiers

None.

None. Red Hat subscription for supported builds.

Paid tiers

None.

None. Red Hat subscription for supported builds.

Comparison

Benchmarks

Benchmarks

benchmark

Wall time, seconds for a full load

Wall time, seconds for a full load

Wall time, seconds for a full load

Filament

Debezium

NYC Taxi, PG → PG (298.3M rows)

114.8 s

6,558.9 s

TPC-H, PG → PG (8.7M rows)

3.79 s

226.2 s

Rows per second

Rows per second

Rows per second

Filament

Filament

Debezium

Debezium

Better

NYC Taxi, PG → PG

NYC Taxi, PG → PG

2,597,498

2,597,498

2,597,498

45,476

45,476

45,476

Filament 57.1×

TPC-H, PG → PG

TPC-H, PG → PG

2,288,144

2,288,144

2,288,144

38,283

38,283

38,283

Filament 59.8×

CPU seconds, summed across the mover's containers

CPU seconds, summed across the mover's containers

CPU seconds, summed across the mover's containers

Filament

Filament

Debezium

Debezium

Better

NYC Taxi, PG → PG

377.4

377.4

377.4

11,658.4

11,658.4

11,658.4

Filament 30.9×

TPC-H, PG → PG

17.9

17.9

17.9

454.7

454.7

454.7

Filament 25.4×

Peak memory, largest container

Peak memory, largest container

Peak memory, largest container

Filament

Debezium

NYC Taxi, PG → PG (298.3M rows)

2.97 GiB

15.70 GiB

TPC-H, PG → PG (8.7M rows)

1.83 GiB

8.64 GiB

Last updated on August 31, 2026

Full Filament vs. Debezium benchmark report

Full Filament vs. Debezium benchmark report

Full Filament vs. Debezium benchmark report

Migrate to

Migrate to

Copyright © 2026 Galaxy. All rights reserved.