ClickBench icon indicating copy to clipboard operation
ClickBench copied to clipboard

Cannot share links to test cases.

Open andyg2 opened this issue 1 year ago • 2 comments

The hashbang length makes it challenging to share a benchmark results on https://benchmark.clickhouse.com/#.........

Maybe if the assumption was that a metric is not selected (false) by default, the base64 encoded JSON could be reduced from this:

{
    "system": {
        "AlloyDB": false,
        "Athena (partitioned)": false,
        "Athena (single)": false,
        "Aurora for MySQL": false,
        "Aurora for PostgreSQL": false,
        "ByConity": false,
        "ByteHouse": false,
        "chDB (Parquet, partitioned)": false,
        "chDB": false,
        "Citus": false,
        "ClickHouse Cloud (aws)": false,
        "ClickHouse Cloud (aws) Parallel Replicas ON": false,
        "ClickHouse Cloud (Azure)": false,
        "ClickHouse Cloud (Azure) Parallel Replica ON": false,
        "ClickHouse Cloud (Azure) Parallel Replicas ON": false,
        "ClickHouse Cloud (gcp)": false,
        "ClickHouse Cloud (gcp) Parallel Replicas ON": false,
        "ClickHouse (data lake, partitioned)": false,
        "ClickHouse (data lake, single)": false,
        "ClickHouse (Parquet, partitioned)": false,
        "ClickHouse (Parquet, single)": false,
        "ClickHouse (web)": true,
        "ClickHouse": false,
        "ClickHouse (tuned)": false,
        "ClickHouse (tuned, memory)": false,
        "Cloudberry": false,
        "CrateDB": false,
        "Crunchy Bridge for Analytics (Parquet)": false,
        "Databend": false,
        "DataFusion (Parquet, partitioned)": false,
        "DataFusion (Parquet, single)": false,
        "Apache Doris": false,
        "Druid": false,
        "DuckDB (Parquet, partitioned)": false,
        "DuckDB": false,
        "Elasticsearch": false,
        "Elasticsearch (tuned)": false,
        "GlareDB": false,
        "Greenplum": false,
        "HeavyAI": false,
        "Hydra": false,
        "Infobright": false,
        "Kinetica": false,
        "MariaDB ColumnStore": false,
        "MariaDB": false,
        "MonetDB": false,
        "MongoDB": false,
        "Motherduck": false,
        "MySQL (MyISAM)": false,
        "MySQL": false,
        "Oxla": false,
        "ParadeDB (Parquet, partitioned)": false,
        "ParadeDB (Parquet, single)": false,
        "Pinot": false,
        "PostgreSQL (tuned)": false,
        "PostgreSQL": true,
        "QuestDB (partitioned)": false,
        "QuestDB": false,
        "Redshift": false,
        "SelectDB": false,
        "SingleStore": false,
        "Snowflake": false,
        "SQLite": false,
        "StarRocks": false,
        "Tablespace": false,
        "Tembo OLAP (columnar)": false,
        "TimescaleDB (compression)": false,
        "TimescaleDB": false,
        "Umbra": false
    },
    "type": {
        "C": false,
        "column-oriented": true,
        "PostgreSQL compatible": true,
        "managed": false,
        "gcp": false,
        "stateless": false,
        "Java": false,
        "C++": false,
        "MySQL compatible": false,
        "row-oriented": false,
        "ClickHouse derivative": false,
        "embedded": false,
        "serverless": false,
        "aws": false,
        "parallel replicas": false,
        "Azure": false,
        "analytical": false,
        "Rust": false,
        "search": false,
        "document": false,
        "somewhat PostgreSQL compatible": false,
        "time-series": false
    },
    "machine": {
        "16 vCPU 128GB": false,
        "8 vCPU 64GB": false,
        "serverless": false,
        "16acu": false,
        "c6a.4xlarge, 500gb gp2": true,
        "L": false,
        "M": false,
        "S": false,
        "XS": false,
        "c6a.metal, 500gb gp2": true,
        "192GB": false,
        "24GB": false,
        "360GB": false,
        "48GB": false,
        "720GB": false,
        "96GB": false,
        "1430GB": false,
        "dev": false,
        "708GB": false,
        "c5n.4xlarge, 500gb gp2": false,
        "Analytics-256GB (64 vCores, 256 GB)": false,
        "c5.4xlarge, 500gb gp2": false,
        "c6a.4xlarge, 1500gb gp2": false,
        "cloud": false,
        "dc2.8xlarge": false,
        "ra3.16xlarge": false,
        "ra3.4xlarge": false,
        "ra3.xlplus": false,
        "S2": false,
        "S24": false,
        "2XL": false,
        "3XL": false,
        "4XL": false,
        "XL": false,
        "L1 - 16CPU 32GB": false,
        "c6a.4xlarge, 500gb gp3": false
    },
    "cluster_size": {
        "1": true,
        "2": false,
        "4": false,
        "8": false,
        "16": false,
        "32": false,
        "64": false,
        "128": false,
        "serverless": false,
        "dedicated": false
    },
    "metric": "hot",
    "queries": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
}

base64 encoded is 4328 characters, over twice that of most url shorteners like bit.ly. Also too long for facebook or telegram to handle in a single message.

to this (all the false values removed)

{
    "system": {
        "ClickHouse(web)": true,
        "PostgreSQL": true,
    },
    "type": {
        "column-oriented": true,
        "PostgreSQLcompatible": true,
    },
    "machine": {
        "c6a.4xlarge,500gbgp2": true,
        "c6a.metal,500gbgp2": true,
    },
    "cluster_size": {
        "1": true,
    },
    "metric": "hot",
    "queries": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
}

just 602 character base64 encoded and well within the 2048 character rule of thumb most url shorteners etc

eyJzeXN0ZW0iOnsiQ2xpY2tIb3VzZSh3ZWIpIjp0cnVlLCJQb3N0Z3JlU1FMIjp0cnVlLH0sInR5cGUiOnsiY29sdW1uLW9yaWVudGVkIjp0cnVlLCJQb3N0Z3JlU1FMY29tcGF0aWJsZSI6dHJ1ZSx9LCJtYWNoaW5lIjp7ImM2YS40eGxhcmdlLDUwMGdiZ3AyIjp0cnVlLCJjNmEubWV0YWwsNTAwZ2JncDIiOnRydWUsfSwiY2x1c3Rlcl9zaXplIjp7IjEiOnRydWUsfSwibWV0cmljIjoiaG90IiwicXVlcmllcyI6W3RydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWVdfQ

andyg2 avatar Aug 23 '24 05:08 andyg2

Thank you! I've also considered that.

By the way, you can use https://pastila.nl/ as a link shortener, as follows:

  1. Open https://pastila.nl/
  2. Disable "end-to-end encryption" with the checkbox at the top.
  3. Paste the URL.
  4. Copy the URL from the page address, and add .link at the end. It will be the shortened URL.

alexey-milovidov avatar Oct 13 '24 13:10 alexey-milovidov

👋

It seems like the query string gets truncated on Safari and copying it into another tab loses the filters.

Here I selected "DuckDB" and "DuckDB (Parquet, partitioned)" which gets decoded to incomplete JSON

JSON
{"system":{"AlloyDB":false,"AlloyDB (tuned)":false,"Athena (partitioned)":false,"Athena (single)":false,"Aurora for MySQL":false,"Aurora for PostgreSQL":false,"ByConity":false,"ByteHouse":false,"chDB (DataFrame)":false,"chDB (Parquet, partitioned)":false,"chDB":false,"Citus":false,"ClickHouse Cloud (aws)":false,"ClickHouse Cloud (azure)":false,"ClickHouse Cloud (gcp)":false,"ClickHouse (data lake, partitioned)":false,"ClickHouse (data lake, single)":false,"ClickHouse (Parquet, partitioned)":false,"ClickHouse (Parquet, single)":false,"ClickHouse (web)":false,"ClickHouse":false,"ClickHouse (tuned)":false,"ClickHouse (tuned, memory)":false,"Cloudberry":false,"CrateDB":false,"Crunchy Bridge for Analytics (Parquet)":false,"Databend":false,"DataFusion (Parquet, partitioned)":false,"DataFusion (Parquet, single)":false,"Apache Doris":false,"Druid":false,"DuckDB (DataFrame)":false,"DuckDB (Parquet, partitioned)":true,"DuckDB":true,"Elasticsearch":false,"Elasticsearch (tuned)":false,"GlareDB":false,"Greenplum":false,"HeavyAI":false,"Hydra":false,"Infobright":false,"Kinetica":false,"MariaDB ColumnStore":false,"MariaDB":false,"MonetDB":false,"MongoDB":false,"Motherduck":false,"MySQL (MyISAM)":false,"MySQL":false,"Oxla":false,"Pandas (DataFrame)":false,"ParadeDB (Parquet, partitioned)":false,"ParadeDB (Parquet, single)":false,"Pinot":false,"Polars (DataFrame)":false,"PostgreSQL (tuned)":false,"PostgreSQL":false,"QuestDB (partitioned)":false,"QuestDB":false,"Redshift":false,"SingleStore":false,"Snowflake":false,"SQLite":false,"StarRocks":false,"Tablespace":false,"Tembo OLAP (columnar)":false,"TimescaleDB (compression)":false,"TimescaleDB":false,"Umbra":false},"type":{"C":false,"column-oriented":false,"PostgreSQL compatible":false,"managed":false,"gcp":false,"stateless":false,"Java":false,"C++":false,"MySQL compatible":false,"row-oriented":false,"ClickHouse derivative":false,"embedded":true,"serverless":false,"dataframe":false,"aws":false,"azure":false,"analytical":false,"Rust":false,"search":false,"document":false,"somewhat PostgreSQL compatible":false,"time-series":false},"machine":{"16 vCPU 128GB":false,"8 vCPU 64GB":false,"serverless":false,"16acu":false,"c6a.4xlarge, 500gb gp2":true,"L":false,"M":false,"S":false,"XS":false,"c6a.metal, 500gb gp2":false,"192GB":false,"24GB":false,"360GB":false,"48GB":false,"720GB":false,"96GB":false,"dev":false,"708GB":false,"c5n.4xlarge, 500gb gp2":false,"Analytics-256GB (64 vCores, 256 GB)":false,"c5.4xlarge, 500gb gp2":false,"c6a.4xlarge, 1500gb gp2":false,"cloud":false,"dc2.8xlarge":false,"ra3.16xlarge":false,"ra3.4xlarge":false,"ra3.xlplus":false,"S2":false,"S24":false,"2XL":false,"3XL":false,"4XL":false,"XL":false,"L1 - 16CPU 32GB":false,"c6a.4xlarge, 500gb gp3":false},"cluster_size":{"1":true,"2":true,"4":true,"8":true,"16":true,"32":true,"64":true,"128":true,"serverless":true},"metric":"hot","queries":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,tr

Note how it ends with ",true,tr"


Since Base64 is not really human readable, could the filters be represented as a byte arrays of bitmaps?

Like

system=[1, 2, 3, 4]

would mean a bitmap like

00000001 00000010 00000011 00000100

which enables

system=[7, 14, 22, 23, 29]

or if these idx mean position in a sorted list

system=["ByConity", "ClickHouse (data lake, single)", "CrateDB", "Crunchy Bridge for Analytics (Parquet)", "DuckDB (DataFrame)"]

Ah, no. The filters would break if the list gets extended ...

ruslandoga avatar Oct 23 '24 02:10 ruslandoga

I've implemented an algorithm for compressed links.

alexey-milovidov avatar Jul 11 '25 16:07 alexey-milovidov

implemented an algorithm for compressed links

Nicely done

andyg2 avatar Jul 11 '25 16:07 andyg2