// the find
nikepan/clickhouse-bulk
Collects many small inserts to ClickHouse and send in big inserts
A sidecar proxy that sits between your app and ClickHouse, batching small HTTP inserts into larger ones before forwarding. Solves a real ClickHouse pain point: the HTTP interface handles many small inserts poorly, and this gets you batch efficiency without changing your application code. Useful if you're logging or event-tracking at high volume and can't batch at the source.
The flush-by-count and flush-by-interval dual trigger is the right design — you won't wait forever for a partial batch. Dump-to-disk on ClickHouse failure is a practical safety net that most homegrown batchers skip. Multi-server support with automatic bad-server detection means you can point it at a cluster and get basic failover. The `remove_query_id` option shows real-world ClickHouse driver experience — that's a non-obvious gotcha.
It's a single flat binary with no concept of per-table backpressure — if one table's inserts back up, everything backs up together. The dump recovery is best-effort: if the process crashes mid-flush, you might lose the in-memory batch (no WAL, no acknowledgment back to the caller). At 510 stars with last meaningful activity in early 2025, maintenance looks thin. No support for ClickHouse native TCP protocol — HTTP-only means you lose async inserts and binary formats that reduce serialization overhead on high-throughput paths.