Skip to main content

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.