ClickHouse engineering resources


  • When to denormalize, when to join: A ClickHouse guide

    Denormalization and normalization are both valid analytical data-modeling strategies. A decision framework for choosing where to denormalize, where to join, and which ClickHouse primitives bridge the gap.

    Last updated: Jun 26, 2026

  • How to scale vector search in Postgres (pgvector) for RAG and AI agents: memory limits, filtering, and when to go hybrid

    Scale vector search in Postgres with pgvector: avoid HNSW RAM limits, fix filtering recall, and know when to go hybrid. Read now.

    Last updated: Jun 18, 2026

  • How to query a REST API in Python

    Read a JSON API response into a DataFrame with chDB. Use the pandas API you already know to filter and aggregate the response, running on ClickHouse's engine with no server to start.

    Last updated: Jun 15, 2026

  • How to convert Parquet to ORC

    Convert a Parquet file to ORC with one clickhouse-local command. The schema is read from the Parquet footer and the types carry into ORC, with no server and no upload.

    Last updated: Jun 6, 2026

  • How to query a REST API with SQL

    Run SQL straight against a live JSON or CSV HTTP endpoint with clickhouse local — fetch, filter, aggregate and join the response in one statement, with no download step.

    Last updated: Jun 15, 2026

  • Parse url-encoded form data with SQL

    Turn an application/x-www-form-urlencoded body like a=1&b=hello into a queryable row with clickhouse local, with no parsing code and no import step.

    Last updated: Jun 15, 2026

  • What is Protobuf?

    Protobuf (Protocol Buffers) is a schema-first, compact binary serialization format. This page explains its structure, the .proto schema requirement, and proves it by writing and reading a real Protobuf file.

    Last updated: Jun 15, 2026

  • Run SQL across multiple CSV or Parquet files

    Query a whole directory of CSV or Parquet files as one table with clickhouse-local. A glob path reads them all, aggregates run across every file, and a virtual column tells you which file each row came from.

    Last updated: Jun 15, 2026

  • Read Avro from a schema registry with clickhouse-local

    Read a plain .avro file with one command, and use the AvroConfluent format plus format_avro_schema_registry_url to read Confluent-framed Avro messages from a Kafka Schema Registry.

    Last updated: Jun 15, 2026

  • How to query a mysqldump file without importing

    Run SQL against the tables inside a mysqldump .sql file directly with clickhouse-local. No MySQL server, no restore step — the INSERT statements are read as a table.

    Last updated: Jun 15, 2026

  • How to convert Avro to JSON

    Convert an Avro file to JSON with one command using clickhouse-local. The schema is read from the Avro file itself, types are carried into JSON, and there is no upload and no server.

    Last updated: Jun 15, 2026

  • How to read a RowBinary file

    Read a ClickHouse RowBinary file from your terminal with one command, using clickhouse local. RowBinaryWithNamesAndTypes is self-describing; plain RowBinary needs an explicit structure.

    Last updated: Jun 15, 2026

  • How to read a ClickHouse Native format file

    Open and query a ClickHouse Native (.native) file from your terminal with one command, using clickhouse local. The file carries its own schema, so reads need no types and lose no precision.

    Last updated: Jun 15, 2026

  • How to convert TSV to JSON

    Convert a TSV file to JSON from your terminal with clickhouse-local — the header becomes the keys and types are inferred, with no upload and no server.

    Last updated: Jun 15, 2026

  • How to convert NDJSON to CSV

    Convert a line-delimited NDJSON file to CSV from your terminal with clickhouse-local — schema auto-inferred, nested objects flattened, no server and no upload.

    Last updated: Jun 15, 2026