Skip to content

Demo website #69

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 134 commits into from
Jun 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
760a58e
welcome
wangpatrick57 Dec 31, 2024
1877621
welcome
wangpatrick57 Dec 31, 2024
01715a1
dsstore
wangpatrick57 Dec 31, 2024
381655e
leaderboard
wangpatrick57 Dec 31, 2024
b6b1973
sysknobs
wangpatrick57 Dec 31, 2024
3d946dc
qknobs
wangpatrick57 Dec 31, 2024
4214ca2
indexes
wangpatrick57 Dec 31, 2024
20030d8
added navbar
wangpatrick57 Dec 31, 2024
17f8476
got rid of navbar
wangpatrick57 Dec 31, 2024
93536c3
added next buttons
wangpatrick57 Dec 31, 2024
b358c24
moved next buttons to top right
wangpatrick57 Dec 31, 2024
055ebee
changed font
wangpatrick57 Dec 31, 2024
2417357
styled header bar
wangpatrick57 Dec 31, 2024
c725c42
added padding to all tables
wangpatrick57 Dec 31, 2024
95f29a1
centered form on welcome
wangpatrick57 Dec 31, 2024
8f1d751
centered everything
wangpatrick57 Dec 31, 2024
e8475d8
can now select table and column for index
wangpatrick57 Dec 31, 2024
1bc297f
qknobs different layout
wangpatrick57 Dec 31, 2024
4d21c08
qknobs style
wangpatrick57 Dec 31, 2024
c5d5967
added checkboxes to welcome page
wangpatrick57 Dec 31, 2024
eb85e36
added popup with queries to welcome
wangpatrick57 Dec 31, 2024
43607d7
moved popup button outside of form container
wangpatrick57 Dec 31, 2024
89941a2
moved popup to botleft
wangpatrick57 Jan 1, 2025
83b7bfa
added view queries to all screens (as component)
wangpatrick57 Jan 1, 2025
14bcde1
added print json button to all pages
wangpatrick57 Jan 1, 2025
8d9067e
name and email only show if the checkboxes are clicked
wangpatrick57 Jan 1, 2025
c82e76f
now adding indexes to json
wangpatrick57 Jan 1, 2025
7a0e0d8
now saving sysknobs
wangpatrick57 Jan 1, 2025
2279a0a
now adding qknobs to json
wangpatrick57 Jan 1, 2025
9f243cd
upgraded next buttons
wangpatrick57 Jan 1, 2025
9f5b94f
added info to welcome
wangpatrick57 Jan 1, 2025
bb729d9
task gray box
wangpatrick57 Jan 2, 2025
e8270ab
added hover to buttons
wangpatrick57 Jan 2, 2025
2138b8e
query_html_gen.py
wangpatrick57 Jan 2, 2025
61fda50
query 11a
wangpatrick57 Jan 2, 2025
2d63d01
now loading queries dynamically
wangpatrick57 Jan 2, 2025
05ec2f2
query 6a
wangpatrick57 Jan 2, 2025
3b6ffef
q3b
wangpatrick57 Jan 2, 2025
93d8fb7
made indexes page look better
wangpatrick57 Jan 2, 2025
1d3433e
now saving qknobs across query pages
wangpatrick57 Jan 2, 2025
d0ca826
fixed how queries are loaded
wangpatrick57 Jan 2, 2025
38d36e8
Reset button
wangpatrick57 Jan 2, 2025
3553e96
styled close button
wangpatrick57 Jan 2, 2025
9a2d43b
fixed some stuff for view queries
wangpatrick57 Jan 2, 2025
f27a8a4
added step nums
wangpatrick57 Jan 2, 2025
4754ec5
moved queries to right side
wangpatrick57 Jan 2, 2025
af18934
fixed query loading issue
wangpatrick57 Jan 2, 2025
6048082
fixed small things
wangpatrick57 Jan 2, 2025
812f16d
simplified qknobs
wangpatrick57 Jan 2, 2025
53f430e
added cmudb logo
wangpatrick57 Jan 3, 2025
9b03af7
better cmudb logo
wangpatrick57 Jan 3, 2025
7fbe4e3
added timer
wangpatrick57 Jan 3, 2025
390625d
readme
wangpatrick57 Jan 3, 2025
c002fb2
q2a
wangpatrick57 Jan 3, 2025
8b631be
basic backend
wangpatrick57 Jan 3, 2025
15f4946
fmt
wangpatrick57 Jan 3, 2025
37ad580
moved default scale factor to infra_paths
wangpatrick57 Jan 3, 2025
ff82035
moved time_workload into PostgresConn
wangpatrick57 Jan 3, 2025
306107a
backend now runs (w/o config)
wangpatrick57 Jan 3, 2025
b9a0331
confetti page
wangpatrick57 Jan 3, 2025
4313452
Merge remote-tracking branch 'refs/remotes/origin/demo' into demo
wangpatrick57 Jan 3, 2025
8dde90f
italics
wangpatrick57 Jan 3, 2025
840ba63
added time up popup to all pages
wangpatrick57 Jan 4, 2025
6eccc53
times up now saves data in all screens
wangpatrick57 Jan 4, 2025
5046b8d
changed timer back to 60
wangpatrick57 Jan 4, 2025
9ba52c5
made backend a class
wangpatrick57 Jan 4, 2025
4e983c2
mock backend server
wangpatrick57 Jan 4, 2025
90b84e2
hooked up frontend to mock backend
wangpatrick57 Jan 4, 2025
cbc9195
leaderboard -> results
wangpatrick57 Jan 4, 2025
4eed151
leaderboard now populates based on data from backend
wangpatrick57 Jan 4, 2025
dd5e085
added dot animation
wangpatrick57 Jan 4, 2025
1a3c910
now stopping barrel animation
wangpatrick57 Jan 4, 2025
bb152a4
now showing runtime on submission screen
wangpatrick57 Jan 4, 2025
395b822
made leaderboard its own endpoint
wangpatrick57 Jan 4, 2025
e61186c
done with leaderboard
wangpatrick57 Jan 5, 2025
9b6a427
changed cursors
wangpatrick57 Jan 5, 2025
bc59281
hid email
wangpatrick57 Jan 5, 2025
00bf6ec
now runs on nuc
wangpatrick57 Jan 5, 2025
18c1b69
backend benchmarking
wangpatrick57 Jan 7, 2025
4b97429
removed benchmarking code
wangpatrick57 Jan 7, 2025
bce8085
added icons
wangpatrick57 Jan 7, 2025
94e87d2
q4a
wangpatrick57 Jan 7, 2025
0f4cd36
added accordion menu and pretty query printing
wangpatrick57 Jan 7, 2025
5cc016e
logo is now fixed, not absolute
wangpatrick57 Jan 7, 2025
ffb8773
select font size
wangpatrick57 Jan 7, 2025
9409322
sizing
wangpatrick57 Jan 7, 2025
5112cb8
60 second timer
wangpatrick57 Jan 7, 2025
457682a
fmt and mypy
wangpatrick57 Jan 7, 2025
2b9357a
qol for time workload backend (working)
wangpatrick57 Jan 7, 2025
8a7421b
small changes
wangpatrick57 Jan 8, 2025
55b63bb
changes
wangpatrick57 Jan 8, 2025
fc2767f
consolidated pg constants into gymlib
wangpatrick57 Jan 9, 2025
805568c
added pgtune. fixed bug in pg_conn
wangpatrick57 Jan 9, 2025
107fb57
pgtune only 10 most important knobs
wangpatrick57 Jan 9, 2025
3e6816d
pgtune round numbers
wangpatrick57 Jan 9, 2025
e07162f
comment
wangpatrick57 Jan 9, 2025
49f4d4a
now config idx in json
wangpatrick57 Jan 9, 2025
ca3b71b
protox config
wangpatrick57 Jan 9, 2025
e987cbe
protox without really bad knobs and with less indexes
wangpatrick57 Jan 9, 2025
ce045c0
now running app itself
wangpatrick57 Jan 9, 2025
7808095
pgtune nuc
wangpatrick57 Jan 9, 2025
d72d19d
basic backend leaderboard
wangpatrick57 Jan 9, 2025
9a865d1
got rid of rank cuz it was confusing
wangpatrick57 Jan 9, 2025
e101eaf
tofixed
wangpatrick57 Jan 9, 2025
4aea0d8
best runtime
wangpatrick57 Jan 9, 2025
0bdddfb
leaderboard works with no name. moved base runtime to submission
wangpatrick57 Jan 9, 2025
56a006f
added machine info
wangpatrick57 Jan 9, 2025
ef0f0ba
machine info in welcome
wangpatrick57 Jan 9, 2025
777e412
better styling
wangpatrick57 Jan 9, 2025
497bb29
can now handle no indexes/sysknobs/qknobs. no more type in indexes
wangpatrick57 Jan 9, 2025
bf95319
includes in index
wangpatrick57 Jan 10, 2025
4a1ed95
index instructions
wangpatrick57 Jan 10, 2025
488fce3
max 5 indexes
wangpatrick57 Jan 10, 2025
25eb32b
dup index deetection
wangpatrick57 Jan 10, 2025
fa3ac86
b+
wangpatrick57 Jan 10, 2025
008c08c
simplified table spec
wangpatrick57 Jan 10, 2025
d055eea
added all tables
wangpatrick57 Jan 10, 2025
87e7670
formatted create and table
wangpatrick57 Jan 10, 2025
b6f0a92
top margin
wangpatrick57 Jan 10, 2025
4e26cc8
filled in sysknobs
wangpatrick57 Jan 11, 2025
67348c4
select width
wangpatrick57 Jan 11, 2025
d54fb0b
fmt and mypy
wangpatrick57 Jan 11, 2025
7b1df79
handling include null
wangpatrick57 Jan 11, 2025
2f04062
simplified qknobs in protox
wangpatrick57 Jan 11, 2025
c43aae2
made costs round nums
wangpatrick57 Jan 11, 2025
bea48f9
reordered knobs in protox
wangpatrick57 Jan 11, 2025
17da6bc
qknobs
wangpatrick57 Jan 11, 2025
0920ea1
leaderboard name now req
wangpatrick57 Jan 12, 2025
bed102f
your results
wangpatrick57 Jan 12, 2025
a58a246
demo vid
wangpatrick57 Jan 17, 2025
c2fcc06
qknobs -> opthints
wangpatrick57 Jan 17, 2025
98482cb
test leaderboard
wangpatrick57 Jun 3, 2025
dbd50f2
dbgym_demo_config.yaml
wangpatrick57 Jun 3, 2025
3cc6f86
leaderboard
wangpatrick57 Jun 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ build/
workspace/
default_*_benchbase_config_*.xml
*.egg-info/
*.code-workspace
*.code-workspace
.DS_Store
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 🛢️ Database Gym 🏋️
[\[Slides\]](http://www.cidrdb.org/cidr2023/slides/p27-lim-slides.pdf) [\[Paper\]](https://www.cidrdb.org/cidr2023/papers/p27-lim.pdf)

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

## Quickstart

Expand Down
1 change: 0 additions & 1 deletion benchmark/constants.py

This file was deleted.

4 changes: 2 additions & 2 deletions benchmark/job/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@

import click
from gymlib.infra_paths import (
DEFAULT_SCALE_FACTOR,
get_tables_dirname,
get_workload_dirname,
get_workload_suffix,
)
from gymlib.workspace import DBGymWorkspace, fully_resolve_path, name_to_linkname

from benchmark.constants import DEFAULT_SCALE_FACTOR
from util.shell import subprocess_run

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

Expand Down
3 changes: 1 addition & 2 deletions benchmark/job/load_info.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from pathlib import Path
from typing import Optional

from gymlib.infra_paths import get_tables_symlink_path
from gymlib.infra_paths import DEFAULT_SCALE_FACTOR, get_tables_symlink_path
from gymlib.workspace import DBGymWorkspace, fully_resolve_path

from benchmark.constants import DEFAULT_SCALE_FACTOR
from dbms.load_info_base_class import LoadInfoBaseClass

JOB_SCHEMA_FNAME = "job_schema.sql"
Expand Down
2 changes: 1 addition & 1 deletion benchmark/tests/integtest_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from pathlib import Path

from gymlib.infra_paths import (
DEFAULT_SCALE_FACTOR,
get_tables_symlink_path,
get_workload_suffix,
get_workload_symlink_path,
Expand All @@ -14,7 +15,6 @@
)

# It's ok to import private functions from the benchmark module because this is an integration test.
from benchmark.constants import DEFAULT_SCALE_FACTOR
from benchmark.job.cli import _job_tables, _job_workload
from benchmark.tpch.cli import _tpch_tables, _tpch_workload
from benchmark.tpch.constants import DEFAULT_TPCH_SEED
Expand Down
2 changes: 1 addition & 1 deletion benchmark/tpch/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import click
from gymlib.infra_paths import (
DEFAULT_SCALE_FACTOR,
get_scale_factor_string,
get_tables_dirname,
get_tables_symlink_path,
Expand All @@ -16,7 +17,6 @@
name_to_linkname,
)

from benchmark.constants import DEFAULT_SCALE_FACTOR
from benchmark.tpch.constants import DEFAULT_TPCH_SEED, NUM_TPCH_QUERIES
from util.shell import subprocess_run

Expand Down
20 changes: 11 additions & 9 deletions dbms/postgres/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,21 @@
import click
import sqlalchemy
from gymlib.infra_paths import (
DEFAULT_SCALE_FACTOR,
get_dbdata_tgz_symlink_path,
get_pgbin_symlink_path,
get_repo_symlink_path,
)
from gymlib.pg import create_sqlalchemy_conn, sql_file_execute
from gymlib.pg import (
DBGYM_POSTGRES_DBNAME,
DBGYM_POSTGRES_PASS,
DBGYM_POSTGRES_USER,
DEFAULT_POSTGRES_DBNAME,
DEFAULT_POSTGRES_PORT,
SHARED_PRELOAD_LIBRARIES,
create_sqlalchemy_conn,
sql_file_execute,
)
from gymlib.workspace import (
WORKSPACE_PATH_PLACEHOLDER,
DBGymWorkspace,
Expand All @@ -27,19 +37,11 @@
)
from sqlalchemy import text

from benchmark.constants import DEFAULT_SCALE_FACTOR
from benchmark.job.load_info import JobLoadInfo
from benchmark.tpch.load_info import TpchLoadInfo
from dbms.load_info_base_class import LoadInfoBaseClass
from util.shell import subprocess_run

DBGYM_POSTGRES_USER = "dbgym_user"
DBGYM_POSTGRES_PASS = "dbgym_pass"
DBGYM_POSTGRES_DBNAME = "dbgym"
DEFAULT_POSTGRES_DBNAME = "postgres"
DEFAULT_POSTGRES_PORT = 5432
SHARED_PRELOAD_LIBRARIES = "boot,pg_hint_plan,pg_prewarm"


@click.group(name="postgres")
@click.pass_obj
Expand Down
42 changes: 42 additions & 0 deletions demo/assets/checkmark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
57 changes: 57 additions & 0 deletions demo/assets/cmu-db-logo-barrel.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading