Near-real-time CDC analytics

CDC costs scale with variety, not volume.

A busy mid-market change feed is 50 GB/day — about 3 MB/s. You could stream that over home broadband. So why do the bills land in six figures?

3 MB/s

of actual change data

~60

tables to keep fresh

$90–105k

a year to reconcile them

The mechanism

Cost = table-count × freshness (commit-frequency)

The expensive thing isn't moving the bytes. It's turning a change-log into a materialized table.

Every commit means

Deduplication
File rewrite
Deletion vectors
New snapshots
New metadata
Compaction

A 10 kB/s account table costs the same as a 5 MB/s order table, the tax is per-commit, not per-byte.

Three ways to pay it

Hot head

Kafkaalready durable
ISK gatewayno ingest
Dedup onceincremental bitmaps
Icebergnative deletes
Any enginecurrent state

Pays it ONCE, off the metered planes

The whole sink → ingest → bronze chain is eliminated, not relocated. Dedup is done once per range and cached, so cost tracks the volume of change — not the number of queries, and not the commit cadence.

What it costs

The same workload, three architectures

List prices, no negotiated discounts, every soft assumption flagged, and the incumbents' cheapest viable configuration costed honestly.

50 GB/day · ~60 tables · ≤5 min freshness · $k/year

Mode A · Tight materialization

$90105k

Continuous bronze→silver MERGE (Dynamic Tables / Streams+Tasks). At ≤5 min over a continuous feed the warehouse never suspends.

Mode B · Lambda union

$2886k

Relaxed merge ($8–18k) + read-time dedup tax ($15–50k) + billed cloud-services metadata ($5–18k). Rises with every new analyst.

ISK · Hot head

$511k

Dedup done once, off the metered planes, on 2–4 commodity m6i.large nodes serving every table already-deduped from cache.

~8× cheaper at the same freshness. The incumbent's cost scales with tables × cadence × adoption. ISK's is roughly flat, bounded by the head.

See here for an in-depth breakdwon of the costs

The mundane cost

And then there's the connector fleet

Every table you want in the warehouse needs a continuous pipeline carrying it there. Anything that duplicates in this way introduces cost and risk, and it's mostly people.

Even managed connectors don't remove the toil. Schema drift, dead-letter-queue triage, connector OOMs, replay and backfill after an outage, these persist whether or not someone else runs the cluster.

ISK removes the category, not just the licence. When the query engine reads Kafka directly as Iceberg, there is no continuous land-append fleet to license and babysit.

Sink fleet at 50 GB/day

Managed connectors, per task~$14k/yr

always on, regardless of throughput

The real number: people~165k/yr

~1 FTE, rivalling the entire reconciliation bill

Traditional connectors require a new pipeline every time you want to expose another Kafka topic. That creates operational overhead, slows delivery, and makes data access increasingly difficult to scale. With Streambased, every Kafka topic is available by default through a single interface, so new data can be consumed immediately without building or maintaining additional pipelines.

How ISK works

Intelligent views, not copies

ISK is a gateway over Kafka, not another ingest hop. Kafka already has the data, ISK exposes it as Iceberg, and expresses current-state through delete files.

Data files are never filtered

An ISK data file is a pure function of the Kafka offset range it covers, same rows, same positions, every time. So caching is exact and serving is zero-copy, with no per-query work on the data path.

Deletes live as composable bitmaps

Supersessions sit in one compact bitmap per chunk. Nothing already settled is ever rewritten.

Dedup is incremental and self-amortizing

A backward supersession scan runs once per range and is cached. Cost tracks the volume of change not the number of queries, and not the commit cadence.

Rendered to each engine's native primitive

The same bits serialize to Iceberg v2 positional deletes for Snowflake or v3 deletion vectors for Databricks. Engines apply them and see a clean current-state table.

Point-in-time views come for free

A reader's delete set is the OR of the bitmaps up to its snapshot. Engines at different offsets each get a different view over the same data.

Cold stays in your estate

On a cadence you choose, your own ETL rolls the hot view into your own compacted table. This is additive to your lakehouse, not a replacement for it.

Streambased

Stop paying the reconciliation tax

Current-state from a CDC stream, served as ordinary Iceberg to any engine.