43 releases
| 0.14.0 | Jun 3, 2025 |
|---|---|
| 0.13.2 | Nov 14, 2024 |
| 0.13.1 | Sep 19, 2024 |
| 0.13.0 | May 8, 2024 |
| 0.2.1 | May 31, 2021 |
#655 in Database interfaces
2,173 downloads per month
Used in 2 crates
(via v-common)
325KB
8K
SLoC
Klickhouse
Klickhouse is a pure Rust SDK for working with Clickhouse with the native protocol in async environments with minimal boilerplate and maximal performance.
Example Usage
See example usage.
Unsupported Features
- Clickhouse
Enum8andEnum16types -- useLowCardinalityinstead.
Running the tests
A Clickhouse server is required to run the integration tests. One can be started easily in a Docker container:
$ docker run --rm --name clickhouse -p 19000:9000 --ulimit nofile=262144:262144 clickhouse
$ export KLICKHOUSE_TEST_ADDR=127.0.0.1:19000
$ # export KLICKHOUSE_TEST_USER=default
$ # export KLICKHOUSE_TEST_PASSWORD=default
$ # export KLICKHOUSE_TEST_DATABASE=default
$ cargo nextest run
(running the tests simultaneously with cargo test is currently not suported, due to loggers initializations.)
Feature flags
derive: Enable [klickhouse_derive], providing a derive macro for the [Row] trait. Default.compression:lz4compression for client/server communication. Default.serde: Derivation of serde::Serialize and serde::Deserialize on various objects, and JSON support. Default.tls: TLS support via tokio-rustls.refinery: Migrations via refinery.geo-types: Conversion of geo types to/from the geo-types crate.bb8: Enables aConnectionManagermanaged by bb8
Credit
klickhouse_derive was made by copy/paste/simplify of serde_derive to get maximal functionality and performance at lowest time-cost. In a prototype, serde was directly used, but this was abandoned due to lock-in of serde's data model.
Dependencies
~14–30MB
~372K SLoC