chlift preview Install with deemwar's help
Postgres → ClickHouse, self-managed · preview

Your Postgres data in ClickHouse, kept in sync, with proof both sides agree.

chlift takes a snapshot of your Postgres tables into ClickHouse, keeps them current with live change data capture, and checks that both sides hold the same data. It is for teams that run their own Postgres and need analytics without hurting it.

chlift is free and MIT licensed. The only paid offers are installation, support and training: io@deemwar.com

What we measured

One end-to-end run on our dev setup (2026-10-03): a 2 GB Postgres (user_events 8.1M rows, request_logs 4M, system_logs 2M) moved by chlift into two ClickHouse replicas, then kept in sync with live inserts, updates and deletes.

154 s

Snapshot of 14,048,000 rows

Copied from Postgres into ClickHouse by migrate start. Then migrate check compared both sides day by day: every day equal on both replicas.

2 silent bugs caught

Before they reached a dashboard

Both were found by chlift's own checks in our test runs, and migrate plan now flags every table exposed to them. Details below.

Query speed-ups

We measured large gains on analytics queries, but the published table and the raw benchmark files do not match yet. Until they do, we show no query timings here.

  • A dev environment on one shared 8-core box, not a vendor benchmark. Your data and queries are the real test.

Two silent data bugs we caught, and what chlift does about them

Replication that fails loudly is annoying. Replication that quietly gives you wrong numbers is worse. Both of these produced no error anywhere.

Long text blanked on updates

With Postgres's default replica identity, unchanged long text/JSON columns were written as empty strings on every UPDATE that did not touch them. In a soak run: 374 rows with empty notes in ClickHouse, 0 in Postgres.

Deleted rows that stayed alive

On a table sorted by time first, delete markers landed under a different key, so deleted rows stayed visible in ClickHouse. migrate check caught it: 1,998,000 rows in Postgres, 2,000,000 in ClickHouse.

What chlift does

migrate plan finds every table at risk (updated tables with long text/JSON columns, and tables whose sort key does not start with the primary key) and gives you the ALTER TABLE … REPLICA IDENTITY FULL to run before anything is copied. migrate check then compares both sides.

What works today, and what doesn't yet

Built and verified on our dev setup

Install on a ClickHouse cluster; migrate plan, start, status and check (with checksums); and the bench.

Being verified now

Cutover (switching readers over to ClickHouse) is written and being verified. A longer replication reliability run is in progress; this page stays marked preview until it passes.

Install today

There are no public binaries yet. Until there are, deemwar installs chlift with you: tell us about your setup below.

Talk to us

Tell us about your Postgres and what you want in ClickHouse. A person replies, usually within a working day. Or email io@deemwar.com.

Running a quick security check…