Key considerations before you build
Before you build a ClickHouse Writer application, be aware of these decisions — each is covered in detail under Create a ClickHouse Writer application.
Typed input stream. Sources that emit JSONNodeEvent, AvroEvent, or WAEvent without a typeUUID (for example, MongoDB Reader, or a Kafka/file source using a JSON or Avro parser) require a continuous query (CQ) to type the event before it reaches ClickHouse Writer. See Typed input stream requirements.
Table engine drives what's automatic. MergeTree, ReplacingMergeTree, CollapsingMergeTree, CoalescingMergeTree (v25.6+), and SummingMergeTree support automatic initial schema creation and schema evolution. AggregatingMergeTree, the Replicated MergeTree engines, and Distributed tables support DML only — you must create the target schema yourself before deploying. See Choosing a table engine.
Not every engine supports CDC. SummingMergeTree and AggregatingMergeTree accept INSERT only; the application halts if the source emits UPDATE, DELETE, or PKUPDATE. See How ClickHouse Writer applies data changes.
Schema evolution has limits. CDDLAction can propagate ADD COLUMN, DROP COLUMN, TRUNCATE TABLE, DROP TABLE, and MODIFY COLUMN type changes — but not column renames or nullability changes, and not at all for AggregatingMergeTree, Replicated engines, or Distributed tables. See Schema handling.
Delivery is at-least-once. A restart or recovery can replay already-written events, and replay-safety differs by engine — CollapsingMergeTree needs particular care. See Troubleshoot ClickHouse Writer.
ClickHouse-specific column types. DEFAULT, ALIAS, MATERIALIZED, and EPHEMERAL columns on the target table are each handled differently by ClickHouse Writer. See Handling ClickHouse default-value columns.