Skip to content

Commit b98ec6f

Browse files
committed
Graph transformation benchmarking.
1 parent 8396ee8 commit b98ec6f

7 files changed

Lines changed: 16783 additions & 0 deletions

examples/graph/tgdk/README.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Benchmark Artifacts for "Logica-TGD: Transforming Graph Databases Logically"
2+
3+
This directory contains reproducible benchmark notebooks for the paper:
4+
5+
> **Logica-TGD: Transforming Graph Databases Logically**
6+
> Evgeny Skvortsov, Yilin Xia, Bertram Ludäscher, Shawn Bowers
7+
> *TGDK, 2026*
8+
9+
## Benchmarks
10+
11+
We compare three systems on graph computation problems (transitive closure,
12+
pairwise distances, same generation):
13+
14+
- **Logica** — compiling to DuckDB SQL
15+
- **Soufflé** — Datalog engine with parallel evaluation
16+
- **DuckPGQ** — DuckDB extension implementing SQL/PGQ (Cypher-style queries)
17+
18+
All benchmarks were run on a Google Cloud **c2d-standard-32** instance
19+
(32 vCPUs, 128 GB RAM).
20+
21+
### Main notebooks
22+
23+
| Notebook | Description |
24+
|----------|-------------|
25+
| `benchmark_logica.ipynb` | Logica benchmarks (all problems). **Run this first** — it generates input data (CSV files and `graphs.db`) used by the other notebooks. |
26+
| `benchmark_souffle.ipynb` | Soufflé benchmarks (compiled mode) |
27+
| `benchmark_cypher.ipynb` | DuckPGQ / Cypher benchmarks |
28+
29+
### Auxiliary materials
30+
31+
| File | Description |
32+
|------|-------------|
33+
| `auxiliary/benchmark_souffle_interpreted.ipynb` | Soufflé benchmarks in interpreted mode (used in the original submission) |
34+
| `auxiliary/benchmark_logica_with_output_sizes.ipynb` | Logica notebook computing output sizes for the table in the paper |
35+
| `auxiliary/souffle_compiled_vs_interpreted.md` | Comparison of Soufflé compiled vs. interpreted modes |
36+
37+
## Reproducing the results
38+
39+
1. Install Jupyter Notebook:
40+
```
41+
python3 -m pip install notebook
42+
```
43+
44+
2. Install DuckDB:
45+
```
46+
python3 -m pip install duckdb
47+
```
48+
49+
3. Install Soufflé (v2.4 was used) by following the instructions at
50+
[souffle-lang.github.io](https://souffle-lang.github.io/install).
51+
52+
4. Clone this repository:
53+
```
54+
git clone https://github.com/EvgSkv/logica
55+
```
56+
57+
5. Start the notebook server from the repository root, so that Logica
58+
is importable:
59+
```
60+
cd logica
61+
python3 -m notebook examples/graph/tgdk
62+
```
63+
Alternatively, install Logica with `python3 -m pip install logica` and start
64+
the notebook from anywhere.
65+
66+
6. Run the notebooks starting with `benchmark_logica.ipynb` — it
67+
generates the input data (CSV files and `graphs.db`) used by the
68+
Soufflé and DuckPGQ notebooks. Then proceed to `benchmark_souffle.ipynb`
69+
and `benchmark_cypher.ipynb`.

0 commit comments

Comments
 (0)