Skip to content

update umbra and add umbra s3#951

Open
toschmidt wants to merge 2 commits into
ClickHouse:mainfrom
umbra-db:schmidt/umbra26.06
Open

update umbra and add umbra s3#951
toschmidt wants to merge 2 commits into
ClickHouse:mainfrom
umbra-db:schmidt/umbra26.06

Conversation

@toschmidt

@toschmidt toschmidt commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Updates Umbra and improves runtimes by loading the data from parquet and using compression.

This also resolves the memory usage problem on smaller instances reported in #543 and the infinite loop during the concurrent measurements in #891.

Add a new Umbra variant that stores the data on S3 instead of the EBS device. Similar to ClickHouse (web), which also uses S3 as a storage backend.

@toschmidt toschmidt force-pushed the schmidt/umbra26.06 branch from f18517e to 0c1d4b1 Compare June 22, 2026 11:17
@toschmidt toschmidt changed the title update umbra update umbra and add umbra s3 Jun 22, 2026
@rschu1ze rschu1ze self-assigned this Jun 30, 2026

@rschu1ze rschu1ze left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@toschmidt I get a permission denied error when I try to push to this PR.

/data/ClickBench (schmidt/umbra26.06 >) $ git push umbra schmidt/umbra26.06
remote: Permission to umbra-db/ClickBench.git denied to rschu1ze.
fatal: unable to access 'https://github.com/umbra-db/ClickBench.git/': The requested URL returned error: 403

Could I ask you to merge from main and resolve the conflicts?

Comment thread umbra/create.sql
);
copy hits from '/data/hits.tsv' with (format text);
clid integer not null
) with (compression=zstd);

@rschu1ze rschu1ze Jun 30, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the primary key definition is gone. Was this intentional?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it's intentional. Enforcing the uniqueness constraint is not mandatory, so the index is not needed.

Comment thread umbra/create.sql
);
copy hits from '/data/hits.tsv' with (format text);
clid integer not null
) with (compression=zstd);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re compression = zstd: I will not oppose this but it slightly violates the spirit of the benchmark. The rules say:

It's better to use the default settings and avoid fine-tuning. Configuration changes can be applied if it is considered strictly necessary and documented.

Fine-tuning and optimization for the benchmark are not recommended but allowed. In this case, add results for the vanilla configuration and tunes results separately (e.g. 'MyDatabase' and 'MyDatabase-tuned')

Running without compression=zstd or making zstd Umbra's default will be the preferred option.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We provide users manual control over compression settings so they can optimize for their specific storage device, cost, and access latency. We could change this to an automated policy but this would make it less obvious for users how the data is stored.

Comment thread umbra/create.sql Outdated
Comment thread umbra/start
Comment thread umbra/start
@toschmidt toschmidt force-pushed the schmidt/umbra26.06 branch from 0c1d4b1 to c47220a Compare July 7, 2026 16:39
toschmidt and others added 2 commits July 7, 2026 18:46
Update the Umbra ClickBench definition: drop the primary key, ingest from
the Athena hits.parquet via the umbra.parquetview table function (instead
of a TSV COPY), and store the table with zstd compression (create.sql, the
Docker variant, reads /data/hits.parquet from the bind mount).

Switch the dataset download to hits.parquet (BENCH_DOWNLOAD_SCRIPT) to
match, require the loaded row count to equal exactly 99,997,497 (a partial
load otherwise sails through with implausibly fast timings on the
surviving subset), and run the Docker container --privileged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a new ClickBench system, "Umbra (S3)", that runs the Umbra benchmark
with the hits table stored on Amazon S3 (backend=cloud) instead of local
disk. It mirrors ../umbra; the only functional differences are where the
table data lives and the bucket-provisioning step it requires.

How it works:
  - create.sql registers an S3 bucket as Umbra remote storage and creates
    the table with backend=cloud, so table data lives in the bucket. The
    dataset (hits.parquet) is still ingested from a local copy via
    umbra.parquetview; only the resulting table is stored in S3.
  - create-bucket provisions the bucket before the run: it resolves AWS
    credentials (env vars, then `aws configure`, then an interactive
    prompt), creates a globally-unique clickbench-umbra-s3-<date>-<uuid>
    bucket, and writes bucket/region/keys to a gitignored, chmod-600
    .s3-env. The same static keys are handed to Umbra's `create remote
    storage` statement, so they must allow normal S3 data access.
  - load sources .s3-env automatically and fails fast with a clear message
    if the UMBRA_S3_* vars are unset. After ingest it asserts the table
    has exactly 99,997,497 rows, since Umbra has been observed to leave a
    partial table on memory-constrained hosts and still produce
    implausibly fast warm timings on the surviving subset.
  - Umbra addresses the bucket as s3://<bucket>:<region>/<path> — the
    region is part of the URI, not a separate option.
  - delete-bucket empties and deletes the bucket recorded in .s3-env and
    removes the file; idempotent and touches no IAM resources.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@toschmidt toschmidt force-pushed the schmidt/umbra26.06 branch from c47220a to aaada50 Compare July 7, 2026 16:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants