Skip to content

docs: add the HStore paper and illustrate the README - #103

Merged
venkat1701 merged 7 commits into
mainfrom
docs/paper
Oct 14, 2026
Merged

venkat1701 merged 7 commits into
mainfrom
docs/paper

Conversation

@venkat1701

@venkat1701 venkat1701 commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

This adds the HStore paper: one document that covers the design of the engine and its evaluation against HyperGraphDB. The PDF is at docs/hstore-paper.pdf (14 pages, ACM sigconf layout).

What is in it

  • Data model, then the engine section by section: counted and summarized copy-on-write trees, the tree-of-trees catalog and the reverse incidence index, node images and the page directory, logged keys and checkpoints, recovery, and compaction through the page directory.
  • Implementation and testing, including the crash points and the power-loss tests from fix(engine): power-loss crash tests and the five durability bugs they found #98.
  • Evaluation against HyperGraphDB at scale 1 (async and sync commits) and scale 4 (data larger than both caches), with throughput, latency percentiles, bytes written, allocation, heap, disk space through deletes and reclamation, and crash recovery.
  • Before and after runs for three design choices: logged keys, inline member trees and records decoded on demand. The costs are reported next to the gains.
  • Related work, and a conclusion with the limitations we know of.

How the numbers get into the text

Nothing is typed in by hand. paper/R/results.R reads the JSON files that Comparison run writes, and produces the plots, the results table and a \M{...} macro for every number the text quotes. The architecture diagrams are drawn in R as well (paper/R/diagrams.R), in the same fonts as the text. paper/build.sh runs R and tectonic and copies the PDF to docs/. docs/development.md explains how to rebuild it.

Where the results come from

All runs used one Azure Standard_D8ds_v5 VM (Xeon Platinum 8370C, 8 vCPUs, 32 GiB, local SSD, Ubuntu 24.04, GraalVM 25.0.4), built from main at 2eb85c6. The VM was deleted afterwards.

runs per system
scale 1, async 5
scale 1, sync 5
scale 4, async 3
each ablation pair, HStore only 3

All 44 runs exited cleanly, and every query checksum matched between the two systems. The raw files are under paper/results and paper/ablation; paper/results/environment.txt has the machine details.

Findings worth a look

  • In one of five HyperGraphDB runs at scale 1, and in every run at scale 4, JE's cleaner took about 13 minutes to reclaim space after the deletes. The paper reports this rather than dropping the run.
  • HStore's median single-commit latency under async durability at scale 1 is higher than HyperGraphDB's, though its tail is much lower.
  • At scale 4 the slowest single commit in a run is slower on HStore, and decoding leaf records on demand roughly halved incidence lookups from eight threads. Both are listed as limitations and still need to be traced.
  • HStore keeps more heap after ingest than HyperGraphDB.

README

The README now has figures, all drawn by the same R code as the paper and written as SVG to docs/images by paper/build.sh:

  • the example hypergraph under the introduction (also Figure 1 of the paper);
  • a new "How it works" section with the engine overview, the tree-of-trees layout, recovery and compaction diagrams;
  • the benchmark ratio and resource plots in the performance section.

The performance section now quotes the Azure runs instead of the earlier laptop runs, and says where HStore is not ahead. The earlier claim that HyperGraphDB opens a crashed store faster no longer holds and is gone.

The paper describes the engine's design (data model, counted and
summarized copy-on-write trees, the tree-of-trees layout, logged keys
and checkpoints, recovery, compaction through the page directory) and
evaluates it against HyperGraphDB. It uses the ACM sigconf layout.

R/diagrams.R draws the architecture figures and R/results.R turns the
benchmark JSON files into the plots, the results table and the \M{...}
macros the text uses for every number, so no measured value is typed
into the text. build.sh points R at the fonts tectonic uses for the
text, draws the figures and compiles the PDF.
Comparison runs of HStore at 2eb85c6 and HyperGraphDB 1.4 on one Azure
Standard_D8ds_v5 machine: scale 1 with asynchronous and with
synchronous commits (5 runs per system each) and scale 4 with
asynchronous commits (3 runs per system), plus before and after runs
of HStore for logged keys, inline member trees and records decoded on
demand (3 runs each). environment.txt records the machine, disks and
JVM. Every run exited cleanly and every query checksum matched between
the two systems.
Output of paper/build.sh for the results in the previous commit, so
that the paper builds with tectonic alone and the PDF can be read from
the repository.
R/diagrams.R draws one hyperedge of each kind from the clinical claims
example: claim 0 with its roles and weight, the chronic back pain care
pathway in order, and the duplicate billing investigation over three
claims. The paper shows it in the data model section.

save_figure and save_plot write each figure as a PDF for the paper
and, when PAPER_README_IMAGES is set, as an SVG for the README. The
results script also writes a wide version of the ratio plot for the
README. build.sh sets the variable to docs/images, so one build keeps
the paper and the README figures in step.
The README now opens with the example hypergraph, gains a "How it
works" section with the engine overview, the tree-of-trees layout,
recovery and compaction diagrams, and shows the benchmark ratios and
resource plots.

The performance section now quotes the Azure runs the paper is built
from instead of the earlier laptop runs, and says where HStore is not
ahead: the median async commit latency, retained heap, and the slowest
single commit at scale 4. The earlier claim that HyperGraphDB opens a
crashed store faster no longer holds and is gone.
@venkat1701 venkat1701 changed the title docs(paper): add the HStore paper with its figures and benchmark results docs: add the HStore paper and illustrate the README Oct 14, 2026
@venkat1701
venkat1701 merged commit 12fba68 into main Oct 14, 2026
@venkat1701
venkat1701 deleted the docs/paper branch October 14, 2026 16:38
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.

1 participant