streamhouse

Crates.iostreamhouse
lib.rsstreamhouse
version0.0.1
sourcesrc
created_at2023-07-02 16:55:11.129656
updated_at2023-07-02 16:55:11.129656
descriptionA strongly typed client for clickhouse
homepage
repositoryhttps://github.com/droundy/streamhouse
max_upload_size
id906229
size68,242
David Roundy (droundy)

documentation

README

Streamhouse   Latest version Documentation Build status

A strongly typed client for ClickHouse that returns a stream of rows.

  • Uses simple Row trait (not serde!) for encoding/decoding rows.
  • Uses RowBinaryWithNamesAndTypes encoding to ensure type safety.
  • Supports HTTP (and HTTPS unknown?).
  • Provides API for selecting.
  • Provides API for inserting.
  • TODO: Compression and decompression (LZ4).

Comparison with the clickhouse crate

  • Both provide similar performance, with clickhouse being a little faster.
  • Unlike clickhouse which has an unsound API, streamhouse does not use unsafe (and thus provides a sound API).
  • streamhouse provides a futures::Stream of rows, where clickhouse only creates a stream-like RowCursor.
  • In clickhouse, an error in which two columns are swapped in order can give incorrect results. With streamhouse this error is caught and reported.
  • Because clickhouse uses serde internally, it is not convenient to create a type that can be used with a different serialization (e.g. when converted to JSON) than its internal representation in clickhouse. streamhouse uses its own traits, so your types can have independent representations as clickhouse columns versus other serializations you may wish to use.
Commit count: 77

cargo fmt