finds.dev← search

// the find

suharev7/clickhouse-rs

★ 342 · Rust · MIT · updated Jul 2024

Asynchronous ClickHouse client library for Rust programming language.

A Rust client for ClickHouse that speaks the native TCP protocol (port 9000), not HTTP. Built on Tokio (or async-std if you prefer), it handles connection pooling, LZ4 compression, and type-safe column reads/writes. Aimed at Rust services that need to push or pull large volumes of data from ClickHouse without the overhead of the HTTP interface.

Native TCP protocol means lower overhead than HTTP-based clients — relevant when you're moving serious data volume. LZ4 compression is built in and toggleable via the DSN, not bolted on. The Block API for bulk inserts is straightforward: build columns, call insert, done. Type coverage is decent — UInt128, Int128, Decimal, IPv4/IPv6, UUID, Nullable, and Array variants are all there.

Last commit was July 2024 and CI still points at Travis CI (which has been effectively dead for open-source for years), which signals the project is in slow-decline maintenance mode at best. The official ClickHouse-maintained Rust client (clickhouse-rs by ClickHouse Inc.) now exists and uses HTTP/RowBinary — if you're starting fresh, that's the safer bet. No support for newer ClickHouse types like Map(K,V), Tuple, or Enum16 in writes. Row-level access via `row.get("col")` requires you to know the column type at the call site — no derive-based deserialization, so binding structs means a lot of manual boilerplate.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →