Skip to content

Add BemiDB#1024

Merged
alexey-milovidov merged 7 commits into
mainfrom
add-bemidb
Jul 23, 2026
Merged

Add BemiDB#1024
alexey-milovidov merged 7 commits into
mainfrom
add-bemidb

Conversation

@alexey-milovidov

Copy link
Copy Markdown
Member

Closes #313.

Adds a ClickBench entry for BemiDB — a Postgres read replica optimized for analytics: a single Go binary that embeds DuckDB, stores data as Apache Iceberg (Parquet), and speaks the PostgreSQL wire protocol.

Design decisions

  • Version: pinned v0.51.1, the last self-contained single-binary, local-storage release. The later v1.x line pivoted to a product that mandates S3 object storage plus a separate catalog database, which doesn't fit a single-VM reproducible benchmark.
  • No Docker: the binary is downloaded from GitHub Releases (amd64/arm64 auto-detected); PostgreSQL comes from the PGDG apt repo.
  • Load path: BemiDB's only ingestion path is syncing from a source PostgreSQL database, so load is a two-stage pipeline — bulk-load hits.tsv into a staging PostgreSQL (COPY FREEZE), then bemidb sync into local Iceberg storage. Both stages are counted as load time, since together they are what it takes to get the dataset queryable in BemiDB. The staging PostgreSQL is stopped before the query phase so only BemiDB is resident.
  • Data size: the local Iceberg directory (compressed Parquet + Iceberg metadata). The staging PostgreSQL is torn down and not counted.
  • Standard PostgreSQL-compatible create.sql / queries.sql, unchanged.

Validation

Ran the full pipeline (load → sync → serve → query) against v0.51.1 on a small synthetic dataset. All 43 queries execute successfully through BemiDB's query remapper → DuckDB. Cold-cycle stop/start restarts cleanly.

No results/ are included yet — the canonical numbers should come from a run on the standard EC2 hardware via the benchmark workflow.

BemiDB (https://github.com/BemiHQ/BemiDB) is a Postgres read replica
optimized for analytics: a single Go binary that embeds DuckDB, stores
data as Apache Iceberg (Parquet), and speaks the PostgreSQL wire protocol.

Pins v0.51.1, the last self-contained single-binary, local-storage
release. The later v1.x line requires S3 object storage and a separate
catalog database, which doesn't fit a single-VM reproducible benchmark.

BemiDB's only ingestion path is syncing from a source PostgreSQL, so the
load step is a two-stage pipeline (bulk-load hits into a staging Postgres,
then `bemidb sync` into local Iceberg); both stages are counted as load
time. The staging Postgres is stopped before the query phase so only
BemiDB is resident. Data size is the local Iceberg directory. No Docker:
the binary comes from GitHub Releases and Postgres from the PGDG apt repo.

Closes #313

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Results for bemidb are ready for: c6a.4xlarge.
The result files are committed as e564586.

Logs:

@alexey-milovidov alexey-milovidov added the machine:all PR benchmark on every machine type label Jul 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Results for bemidb are ready for: c8g.4xlarge.
The result files are committed as 97e6134.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for bemidb are ready for: c6a.4xlarge, c7a.metal-48xl, c8g.metal-48xl.
The result files are committed as f9e1807.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for bemidb are ready for: c6a.metal.
The result files are committed as 440e080.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for bemidb are ready for: c6a.2xlarge.
The result files are committed as 697318f.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for bemidb are ready for: c6a.xlarge.
The result files are committed as 60051b4.

Logs:

@alexey-milovidov
alexey-milovidov merged commit 70dadef into main Jul 23, 2026
@alexey-milovidov alexey-milovidov self-assigned this Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

machine:all PR benchmark on every machine type

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add BemiDB

1 participant