update umbra and add umbra s3#951
Conversation
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>
f18517e to
0c1d4b1
Compare
rschu1ze
left a comment
There was a problem hiding this comment.
@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?
| ); | ||
| copy hits from '/data/hits.tsv' with (format text); | ||
| clid integer not null | ||
| ) with (compression=zstd); |
There was a problem hiding this comment.
Looks like the primary key definition is gone. Was this intentional?
| ); | ||
| copy hits from '/data/hits.tsv' with (format text); | ||
| clid integer not null | ||
| ) with (compression=zstd); |
There was a problem hiding this comment.
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.
| clid integer not null | ||
| ) with (compression=zstd); | ||
|
|
||
| -- Ingest from the Athena parquet rather than the TSV. Umbra's COPY-from- |
There was a problem hiding this comment.
It's fine to keep the comment l. 110-117 around but nobody will miss it if you remove it :-)
| --privileged \ | ||
| --ulimit nofile=1048576:1048576 \ | ||
| --ulimit memlock=-1:-1 \ | ||
| -e ASYNCIO=0 \ |
| -v "$(pwd)/db:/var/db" \ | ||
| -v "$(pwd)/data:/data" \ | ||
| -p 5432:5432 \ | ||
| --privileged \ |
There was a problem hiding this comment.
L. 8 isn't needed (the stop script already does this).
L. 9 can move into the stop script as well.
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.