Skip to content

Debezium alternative — Debezium vs Skippr ​

Debezium is Apache-2.0 log CDC. The usual shape is a Kafka Connect source: Postgres, MySQL, MariaDB, SQL Server, Oracle, Db2, MongoDB, Cassandra, Vitess, and peers. Snapshot, then the transaction log. Events go to Kafka topics. You add a sink. Debezium Server is the same connectors without Kafka; sinks are pluggable (Pub/Sub, Kinesis, Pulsar, HTTP, and others). Apache Iceberg is not in the Debezium tree. The documented Iceberg path is the community project debezium-server-iceberg (1.2.0.Final on 4 Oct 2026, Debezium 3.6.3.Final, Iceberg 1.11.0, Java 21). It writes Parquet (Avro or ORC optional), upsert off by default, deletes kept as __deleted=true unless you change that. Iceberg v3 deletion vectors landed in that 1.2 line. Kafka Connect plus the Iceberg project's sink is the other path; the Debezium transform there is still marked experimental. There is no licence fee. You pay JVMs, Kafka, disks, and people. Confluent Cloud's managed Postgres CDC (Debezium) lists about 0.104 to 0.2083 USD a task-hour plus 0.025 USD a GB. This is not a Streamhouse. There is no Iceberg ∪ WAL.

Skippr is an open Streamhouse you run as one Rust binary. Write skippr.yml (or the same thing in Python), discover, sync. You query live state over Iceberg ∪ WAL, and the history is ordinary Iceberg in your bucket. No Connect cluster. ELT into a warehouse is one path, not the product.

FeatureSkipprDebezium
DeploySingle Rust binary, your VPC or on-premKafka Connect worker, or Debezium Server
SchemaIn-stream evolution, sibling columnsTopic schema plus SMT. Iceberg evolution is the sink's job
StorageOpen Iceberg on Parquet you ownKafka log, then the sink. Iceberg is community Server or Connect
CDCLog-based; fails closed if the dest cannot honourLog CDC. Exactly-once is a Connect/sink property, not the engine
Queryskipprd query on Iceberg ∪ WAL; history in any Iceberg engineAfter the sink. Kafka is the bus, not the lake
PricingFree self-hosted engineApache-2.0. Pay Kafka and JVMs. Confluent Cloud is task-hours plus GB.

What Debezium is good at ​

A WAL you already want on a Kafka topic, with many consumers, including a lake sink as one of them. That is the product. The connector list (Oracle, Db2, Vitess) is why platforms still embed it. Server is the honest cut when you do not want to run Kafka. If the job is "this log onto this bus," that is a real product.

Where the job is wider ​

Debezium is a CDC capture. It is not a Streamhouse. There is no Iceberg ∪ WAL. There is no skipprd query on in-flight rows. Iceberg is a sink you assemble. Compaction, catalog, and fail-closed apply are yours.

The cluster is the ops. Replication slots, Connect rebalances, offset topics, and a community Iceberg jar that tracks Debezium versions on a delay. Skippr will not capture Oracle or Db2 the way Debezium does. Skippr also will not replace a Connect estate that already fans one topic to many consumers.

If the job is "Debezium we already staff," Debezium is the narrower tool. If the job is live SQL on Iceberg you run, Debezium was never that.

Getting started ​

Install skipprd from the install guide, or pip install skippr. The three tabs write the same skippr.yml. Then discover, sync, and query.

yaml
skippr:
  workspace: analytics
  skipprd_el_storage_mode: local

pipelines:
  orders:
    data_source: data_sources.app_db
    data_sink: data_sinks.lake

data_sources:
  app_db:
    Postgres:
      host: db.internal
      user: skippr_reader
      password: ${APP_DB_PASSWORD}
      database: app
      tables: [orders, customers]
      cdc_mode: snapshot_then_cdc

data_sinks:
  lake:
    AthenaIceberg:
      warehouse: s3://my-iceberg-warehouse/
      glue_database_name: analytics
      athena_workgroup_name: primary
      athena_results_s3_bucket: my-athena-results
      region: us-east-1
    schema_sink: schema_sinks.lake_schema

schema_sinks:
  lake_schema:
    AthenaIceberg:
      warehouse: s3://my-iceberg-warehouse/
      glue_database_name: analytics
      athena_workgroup_name: primary
      athena_results_s3_bucket: my-athena-results
      region: us-east-1
bash
skipprd --workspace analytics --storage-mode local connect data-source postgres \
  --pipeline orders \
  --name app_db \
  --host db.internal \
  --user skippr_reader \
  --password '${APP_DB_PASSWORD}' \
  --database app \
  --tables orders \
  --tables customers \
  --cdc-mode snapshot_then_cdc

skipprd connect data-sink athenaiceberg \
  --pipeline orders \
  --name lake \
  --warehouse s3://my-iceberg-warehouse/ \
  --glue-database-name analytics \
  --athena-workgroup-name primary \
  --athena-results-s3-bucket my-athena-results \
  --region us-east-1

skipprd connect schema-sink athenaiceberg \
  --pipeline orders \
  --name lake_schema
python
from skippr import (
    Config,
    DataSinkAthenaIceberg,
    DataSourcePostgres,
    DataSourcePostgresSourceCdcMode,
    EnvRef,
    LocalStorage,
    Pipeline,
)

cfg = Config().workspace("analytics").storage(LocalStorage())

app_db = cfg.data_source(
    "app_db",
    DataSourcePostgres(
        host="db.internal",
        user="skippr_reader",
        password=EnvRef("APP_DB_PASSWORD"),
        database="app",
        tables=["orders", "customers"],
        cdc_mode=DataSourcePostgresSourceCdcMode.SNAPSHOTTHENCDC,
    ),
)

lake = cfg.data_sink(
    "lake",
    DataSinkAthenaIceberg(
        warehouse="s3://my-iceberg-warehouse/",
        glue_database_name="analytics",
        athena_workgroup_name="primary",
        athena_results_s3_bucket="my-athena-results",
        region="us-east-1",
    ),
    schema_sink="lake_schema",
)

cfg.pipeline("orders", Pipeline(data_source=app_db, data_sink=lake))
cfg.save("skippr.yml")
bash
export APP_DB_PASSWORD='your-postgres-password'
skipprd discover --pipeline orders
skipprd sync --pipeline orders --once
skipprd query "SELECT count(*) FROM analytics.orders"

Which to choose ​

Choose Debezium if you want log CDC onto Kafka or a Server sink, and the bus after capture is enough.

Choose Skippr if you want one binary, live SQL, and Iceberg files that stay yours. Skippr will not run a Debezium connector.

Install from Install. Connector and query reference live in Developer Docs. For optional onboarding in your VPC, Enterprise Jumpstart or Contact.