Skip to content

Commit af5cc72

Browse files
Demo website (#69)
**Summary**: * End-to-end demo website to allow users to set system knobs, query knobs, and indexes manually and then evaluate the runtime of 3 JOB queries over that configuration. **Demo**: https://db.cs.cmu.edu/files/videos/dbgym-demo-sigmod2025.mp4
1 parent 1994c6f commit af5cc72

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2791
-51
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ build/
77
workspace/
88
default_*_benchbase_config_*.xml
99
*.egg-info/
10-
*.code-workspace
10+
*.code-workspace
11+
.DS_Store

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 🛢️ Database Gym 🏋️
22
[\[Slides\]](http://www.cidrdb.org/cidr2023/slides/p27-lim-slides.pdf) [\[Paper\]](https://www.cidrdb.org/cidr2023/papers/p27-lim.pdf)
33

4-
*An end-to-end research vehicle for the field of self-driving DBMSs.*
4+
*An end-to-end research vehicle for self-driving databases.*
55

66
## Quickstart
77

benchmark/constants.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

benchmark/job/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
import click
55
from gymlib.infra_paths import (
6+
DEFAULT_SCALE_FACTOR,
67
get_tables_dirname,
78
get_workload_dirname,
89
get_workload_suffix,
910
)
1011
from gymlib.workspace import DBGymWorkspace, fully_resolve_path, name_to_linkname
1112

12-
from benchmark.constants import DEFAULT_SCALE_FACTOR
1313
from util.shell import subprocess_run
1414

1515
JOB_TABLES_URL = "https://event.cwi.nl/da/job/imdb.tgz"
@@ -268,7 +268,7 @@ def _generate_job_workload(
268268
elif query_subset == "a":
269269
query_names = [qname for qname in JOB_QUERY_NAMES if qname[-1] == "a"]
270270
elif query_subset == "demo":
271-
query_names = [f"{i}a" for i in range(1, 6)]
271+
query_names = ["1a", "2a", "4a"]
272272
else:
273273
assert False
274274

benchmark/job/load_info.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
from pathlib import Path
22
from typing import Optional
33

4-
from gymlib.infra_paths import get_tables_symlink_path
4+
from gymlib.infra_paths import DEFAULT_SCALE_FACTOR, get_tables_symlink_path
55
from gymlib.workspace import DBGymWorkspace, fully_resolve_path
66

7-
from benchmark.constants import DEFAULT_SCALE_FACTOR
87
from dbms.load_info_base_class import LoadInfoBaseClass
98

109
JOB_SCHEMA_FNAME = "job_schema.sql"

benchmark/tests/integtest_benchmark.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from pathlib import Path
44

55
from gymlib.infra_paths import (
6+
DEFAULT_SCALE_FACTOR,
67
get_tables_symlink_path,
78
get_workload_suffix,
89
get_workload_symlink_path,
@@ -14,7 +15,6 @@
1415
)
1516

1617
# It's ok to import private functions from the benchmark module because this is an integration test.
17-
from benchmark.constants import DEFAULT_SCALE_FACTOR
1818
from benchmark.job.cli import _job_tables, _job_workload
1919
from benchmark.tpch.cli import _tpch_tables, _tpch_workload
2020
from benchmark.tpch.constants import DEFAULT_TPCH_SEED

benchmark/tpch/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import click
44
from gymlib.infra_paths import (
5+
DEFAULT_SCALE_FACTOR,
56
get_scale_factor_string,
67
get_tables_dirname,
78
get_tables_symlink_path,
@@ -16,7 +17,6 @@
1617
name_to_linkname,
1718
)
1819

19-
from benchmark.constants import DEFAULT_SCALE_FACTOR
2020
from benchmark.tpch.constants import DEFAULT_TPCH_SEED, NUM_TPCH_QUERIES
2121
from util.shell import subprocess_run
2222

dbms/postgres/cli.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,21 @@
1111
import click
1212
import sqlalchemy
1313
from gymlib.infra_paths import (
14+
DEFAULT_SCALE_FACTOR,
1415
get_dbdata_tgz_symlink_path,
1516
get_pgbin_symlink_path,
1617
get_repo_symlink_path,
1718
)
18-
from gymlib.pg import create_sqlalchemy_conn, sql_file_execute
19+
from gymlib.pg import (
20+
DBGYM_POSTGRES_DBNAME,
21+
DBGYM_POSTGRES_PASS,
22+
DBGYM_POSTGRES_USER,
23+
DEFAULT_POSTGRES_DBNAME,
24+
DEFAULT_POSTGRES_PORT,
25+
SHARED_PRELOAD_LIBRARIES,
26+
create_sqlalchemy_conn,
27+
sql_file_execute,
28+
)
1929
from gymlib.workspace import (
2030
WORKSPACE_PATH_PLACEHOLDER,
2131
DBGymWorkspace,
@@ -27,19 +37,11 @@
2737
)
2838
from sqlalchemy import text
2939

30-
from benchmark.constants import DEFAULT_SCALE_FACTOR
3140
from benchmark.job.load_info import JobLoadInfo
3241
from benchmark.tpch.load_info import TpchLoadInfo
3342
from dbms.load_info_base_class import LoadInfoBaseClass
3443
from util.shell import subprocess_run
3544

36-
DBGYM_POSTGRES_USER = "dbgym_user"
37-
DBGYM_POSTGRES_PASS = "dbgym_pass"
38-
DBGYM_POSTGRES_DBNAME = "dbgym"
39-
DEFAULT_POSTGRES_DBNAME = "postgres"
40-
DEFAULT_POSTGRES_PORT = 5432
41-
SHARED_PRELOAD_LIBRARIES = "boot,pg_hint_plan,pg_prewarm"
42-
4345

4446
@click.group(name="postgres")
4547
@click.pass_obj

demo/assets/checkmark.svg

Lines changed: 42 additions & 0 deletions
Loading

demo/assets/cmu-db-logo-barrel.svg

Lines changed: 57 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)