Skip to content

docs: add DuckLake vs Iceberg benchmark report - #79

Merged
viggy28 merged 1 commit into
mainfrom
issue-70-lakehouse-benchmarks
Aug 30, 2026
Merged

docs: add DuckLake vs Iceberg benchmark report#79
viggy28 merged 1 commit into
mainfrom
issue-70-lakehouse-benchmarks

Conversation

@viggy28

@viggy28 viggy28 commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Closes #70.

Adds benchmark documentation and committed baseline result snapshots for the DuckLake vs Iceberg benchmark harness that was merged in #75.

Included:

  • docs/benchmarks/ducklake-vs-iceberg.md
    • benchmark purpose
    • run commands
    • workload shape
    • caveats
    • summarized 100k and 1M result tables
    • example read latency table
  • docs/benchmarks/results/*.json
    • raw JSON result snapshots from the local benchmark run

The benchmark harness itself already exists at:

  • test/integration/lakehouse_feature_benchmark_test.go

Validation:

go test -tags integration -run TestLakehouseFeatureBenchmark -count=1 ./test/integration
go test ./internal/ducklake ./internal/iceberg ./config

@viggy28
viggy28 merged commit ed47cfd into main Aug 30, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 72f2a4db37

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"flush_count": 100,
"final_rows": 90000,
"data_objects": 101,
"delete_objects": 406,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Recompute delete-object counts from filenames

For every delete-10pct and mixed-append-update-delete sample, delete_objects is inflated to total_objects—for example, Iceberg COW reports 406 delete objects here despite using copy-on-write. The generating helper at test/integration/lakehouse_feature_benchmark_test.go:400 classifies any full key containing delete, but the sample prefix itself contains the scenario name, so every data and metadata object matches. These committed object-count results should be regenerated after classification is restricted to the filename or actual object type.

Useful? React with 👍 / 👎.

Run the benchmark with the integration stack:

```bash
docker compose -f test/integration/docker-compose.yml up -d --wait || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Do not mask integration-stack startup failures

When Compose fails to start or health-check MinIO, || true converts that failure into success; Bash's help true documents that it “Return[s] a successful result” and “Always succeeds.” The subsequent benchmark then calls skipIfMinIOUnavailable and exits successfully via t.Skip, so this documented sequence can appear to complete normally without running the benchmark or producing the requested JSON output.

Useful? React with 👍 / 👎.

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.

DuckLake benchmark harness: compare Iceberg vs DuckLake with CDC-like batches

1 participant