Est.

Comparing CDC Platforms on Automatic Schema Evolution Support

Automatic schema evolution reveals CDC platform maturity more than basic feature lists do.

· 8 min read
Cover illustration for “Comparing CDC Platforms on Automatic Schema Evolution Support”
Schema Evolution · November 6, 2026 · 8 min read · 1,821 words

Automatic schema evolution for live CDC pipelines means detecting upstream schema changes and adapting downstream schemas without manual migrations, lost data, or pipeline restarts. Comparing CDC platforms on this capability reveals their operational maturity more clearly than column-addition support alone. The decisive tests are how they handle renames, type changes, consecutive DDL operations, and changes they cannot safely propagate.

Why schema changes are the most common cause of CDC pipeline failures

A column rename can break downstream dashboards even while row changes continue flowing. If the pipeline interprets the rename as a drop followed by an addition, queries referencing the old name can return nulls where data previously existed. The replication task may still look healthy. Schema changes can occur multiple times per day in active engineering organizations, yet many CDC pipelines assume stable schemas.

Other changes expose different parts of that assumption. An added column may disappear without warning or cause ingestion errors because the destination has no matching field. A dropped column can leave a ghost column full of nulls, while a table rename or drop can stop its data flow entirely. Type changes are especially hard to diagnose when typed destinations silently coerce values and accept the events. Stricter constraints can also cause destination insertion failures.

The damage is not confined to destination tables. Stateful streaming operations, including aggregations and joins, depend on event schemas, so a change can invalidate internal state retroactively. Schema drift is the gap between the current source structure and the pipeline’s understanding of it. That gap can widen without an obvious failure signal.

The three CDC capture mechanisms and how each one is structurally positioned to handle DDL

Log-based CDC reads the database transaction log, including PostgreSQL’s WAL, MySQL’s binlog, and MongoDB’s oplog through change streams. Where DDL appears in the captured stream with DML, detecting schema changes becomes an extension of the engine’s existing work. However, databases expose DDL differently, and a log-based engine does not necessarily parse every schema event it encounters.

Query-based CDC instead polls tables using timestamps or sequence IDs. A query using SELECT * may discover an added column on its next poll, but polling observes only current state, leaving the event that produced it unobserved. The distinction limits what it can infer. Without additional instrumentation, it cannot reliably detect renames or type changes, and it misses hard deletes.

Trigger-based CDC uses database triggers to record inserts, updates, and deletes in shadow tables. Those triggers depend on table definitions, so they must be updated when the schema changes. Maintenance grows with the number of affected tables. Capture architecture therefore determines the starting conditions for automation, although the source database and the platform’s implementation still determine which DDL changes can actually propagate.

What compatibility rules actually govern whether a schema change breaks downstream consumers

Forward compatibility means old consumers can process events that use a new schema. An optional added field, or one with a default, can meet this condition because old consumers ignore it. Backward compatibility runs in the opposite direction. New consumers must be able to process older events, which an optional new field with a default permits, but a mandatory field without a default does not.

Full compatibility satisfies both conditions at once. It is the safest and most restrictive class. A rename is ordinarily incompatible because an isolated event cannot establish that the missing old field and the newly appearing field represent the same data. Keeping that link takes explicit rename handling as well as support for a new event shape.

A schema registry enforces the configured compatibility mode when a schema version is submitted. It rejects incompatible submissions before those changes reach consumers. Compatibility rules protect against inconsistent formats, misaligned data structures, and sink incompatibility, but they do not themselves perform a source-to-destination migration.

How PostgreSQL's architectural decisions constrain every tool built on top of it

PostgreSQL’s native logical replication protocol decodes the WAL into row-level changes and distributes them through a publish-subscribe model, supporting replication across major versions and of selected data. Schema changes follow a separate path. Native replication therefore needs schema work on both sides to be coordinated, and columns are usually added on the subscriber first so incoming events do not fail.

PostgreSQL 18, released September 25, 2025, did not remove this restriction, nor did PostgreSQL 19 in beta as of mid-2026. PostgreSQL 18 made parallel streaming the default, added opt-in replication of stored generated columns, and added conflict logging. These changes improve DML replication. DDL coordination still requires an extension such as pglogical, through pglogical.replicate_ddl_command(), or scripted coordination.

For PostgreSQL sources, a platform’s schema automation consequently depends on what it adds above the native protocol. This dependence makes source-specific behavior more revealing than a general claim that a product supports log-based CDC.

MongoDB and DynamoDB present a different problem. Their changes take the form of document-shape variation or record-level attribute additions and removals. MongoDB change streams can resume after disconnection if the oplog still contains the position identified by the stored resume token. Neither resumability nor DynamoDB’s record-level stream events enforce a consistent downstream shape, so that responsibility remains with the platform.

AWS DMS schema evolution behavior in production CDC scenarios

AWS DMS supports some DDL operations, including column additions and table drops, depending on the source and target engine combination. That support can serve a one-time migration without establishing reliable handling of repeated schema changes in continuous replication.

AWS DMS documentation warns that rapid sequences of source DDL operations can cause incorrect log parsing, data loss, or unexpected behavior. Each change must reach the target before the next operations run at the source. Application deployments must therefore be timed to match the progress of replication. The coordination burden grows as deployments become more frequent.

A more difficult failure mode is apparent success while new fields are silently dropped. A task can continue without an alert, validation failure, or schema history that explains the missing data. Complex changes, including type changes and nested structures, can instead fail or stop replication without a clear explanation. These limits make task status alone an inadequate measure of whether a continuously evolving source has been replicated correctly.

Qlik Replicate's approach to automated DDL at enterprise scale

Qlik Replicate approaches schema changes as part of heterogeneous, continuous replication. Its automatic DDL handling detects and propagates changes with little help from a person, who would otherwise have to apply each change. Automation is part of the replication workflow.

Its “Read once, write many” architecture distributes a single capture stream to multiple targets. This supports consistent schema propagation across destinations. Its source coverage includes mainframes, SAP, Oracle, DB2, and standard relational databases. The scope extends DDL automation into heterogeneous enterprise environments.

Qlik can deliver directly to databases, cloud warehouses, and other targets without requiring Kafka infrastructure, although Kafka is also a supported target. This removes a mandatory streaming layer from that deployment path. Its enterprise focus and pricing model will not suit every team, and general automatic-DDL support does not establish identical behavior for every operation. Teams still need to test rename and type-change behavior with the source-target combination they plan to use.

What destination-side schema evolution in Snowflake and Databricks can and cannot do on its own

Destination-side schema evolution can take in new columns that arrive intact. Databricks and Delta Lake support Apache Spark’s .option("mergeSchema", "true") setting to append new columns automatically without a separate table migration. Snowflake combines the ENABLE_SCHEMA_EVOLUTION table parameter with MATCH_BY_COLUMN_NAME in a COPY INTO statement to accommodate incoming new columns. These are useful load-time capabilities.

The boundary is the data that reaches the destination. A warehouse cannot recover a field that the CDC layer has already dropped or misread. Load-time evolution also cannot prevent a type-casting error that happens earlier in the pipeline. Renames remain unresolved unless the CDC layer identifies them, and Snowflake’s described loading behavior treats them as a drop and an addition.

These features also do not provide the CDC-layer schema history, compatibility enforcement, or breaking-change alerts needed to govern the full path. Destination automation and capture-layer automation therefore serve different roles. The former reduces migration work for supported incoming changes, while the latter must preserve and interpret those changes before loading begins.

The operational characteristics that separate automatic schema evolution from manual rescue workflows

A 3 AM page is the visible cost of manual schema management. The less visible cost is a successful-looking pipeline that omits a field while an analyst continues using an obsolete column. Both require more than a destination migration. Someone must discover the drift, determine its extent, test a correction, and deploy it, with that work recurring as schemas evolve.

Detection latency is therefore a production criterion in its own right. Detecting a supported change during capture and applying it in the same pipeline run is different from waiting for a person to notice a broken dashboard. Schema version history makes it easier to look into that difference. Without it, teams must reconstruct changes from application deployment logs rather than query the pipeline’s record of schema versions.

Automation means applying supported changes and making unsupported changes visible before apparent continuity conceals data loss.

Renames expose the limit of purely automatic inference. Log-level evidence alone cannot always distinguish a rename from an intentional drop and addition. Explicit application-level signaling, such as a migration declaring a rename, or platform-level heuristics is needed to resolve that ambiguity. The operational distinction is consequently broader than schema evolution alone, encompassing detection, propagation, validation, and governance across the data path.

How to evaluate CDC platforms on schema evolution before a pipeline is in production

Teams choosing a platform should test specific DDL changes while replication is running. The first test is a nullable column addition. The destination should receive it with the correct nullability, without a restart or lost surrounding rows. This establishes basic propagation, but it does not demonstrate safe handling of more disruptive changes.

The rename test should show whether historical data stays connected under the new name or the platform creates a disconnected drop-and-add sequence. It is the sharpest differentiator. A type-change test should then widen a VARCHAR column or promote an INT to BIGINT, checking for destination schema updates, casting errors, and silent truncation.

Consecutive DDL statements should test whether deployment sequencing requires manual coordination, particularly for DMS-based pipelines. Failure visibility deserves a separate test. For a change the platform claims to support, the evaluation should establish whether it adapts correctly, reports an error, or silently loses data. A schema-history check should also establish whether teams can query a versioned record after an incident.

Weeks of infrastructure setup delay the point at which these behaviors can be tested, while a managed service with sub-hour deployment shortens both evaluation and production lead time. Managed replication does the most to reduce operational risk when it takes on detection, propagation, validation, and visible failure handling. The buying decision should rest on demonstrated behavior across that whole sequence.

Filed underSchema Evolution

More in Schema Evolution