Bencher Database Schema


erDiagram
alert {
    id INTEGER
    uuid TEXT
    boundary_id INTEGER
    boundary_limit BOOLEAN
    status INTEGER
    modified BIGINT
}
benchmark {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    name TEXT
    slug TEXT
    created BIGINT
    modified BIGINT
    archived BIGINT
}
boundary {
    id INTEGER
    uuid TEXT
    metric_id INTEGER
    threshold_id INTEGER
    model_id BOOLEAN
    baseline DOUBLE
    lower_limit DOUBLE
    upper_limit DOUBLE
}
branch {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    name TEXT
    slug TEXT
    head_id INTEGER
    created BIGINT
    modified BIGINT
    archived BIGINT
}
head {
    id INTEGER
    uuid TEXT
    branch_id INTEGER
    start_point_id INTEGER
    created BIGINT
    replaced BIGINT
}
head_version {
    id INTEGER
    head_id INTEGER
    version_id INTEGER
}
measure {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    name TEXT
    slug TEXT
    unites TEXT
    created BIGINT
    modified BIGINT
    archived BIGINT
}
metric {
    id INTEGER
    uuid TEXT
    report_benchmark_id INTEGER
    measure_id INTEGER
    value DOUBLE
    lower_value DOUBLE
    upper_value DOUBLE
}
model {
    id INTEGER
    uuid TEXT
    threshold_id INTEGER
    test INTEGER
    min_sample_size BIGINT
    max_sample_size BIGINT
    window BIGINT
    lower_boundary DOUBLE
    upper_boundary DOUBLE
    created BIGINT
    replaced BIGINT
}
organization {
    id INTEGER
    uuid TEXT
    name TEXT
    slug TEXT
    license TEXT
    created BIGINT
    modified BIGINT
}
organization_role {
    id INTEGER
    user_id INTEGER
    organization_id INTEGER
    role TEXT
    created BIGINT
    modified BIGINT
}
plan {
    id INTEGER
    organization_id INTEGER
    metered_plan TEXT
    licensed_plan TEXT
    license TEXT
    created BIGINT
    modified BIGINT
}
plot {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    rank BIGINT
    title TEXT
    lower_value BOOLEAN
    upper_value BOOLEAN
    lower_boundary BOOLEAN
    upper_boundary BOOLEAN
    x_axis INTEGER
    window BIGINT
    created BIGINT
    modified BIGINT
}
plot_benchmark {
    plot_id INTEGER
    benchmark_id INTEGER
    rank BIGINT
}
plot_branch {
    plot_id INTEGER
    branch_id INTEGER
    rank BIGINT
}
plot_measure {
    plot_id INTEGER
    measure_id INTEGER
    rank BIGINT
}
plot_testbed {
    plot_id INTEGER
    testbed_id INTEGER
    rank BIGINT
}
project {
    id INTEGER
    uuid TEXT
    organization_id INTEGER
    name TEXT
    slug TEXT
    url TEXT
    visibility INTEGER
    created BIGINT
    modified BIGINT
}
project_role {
    id INTEGER
    user_id INTEGER
    project_id INTEGER
    role TEXT
    created BIGINT
    modified BIGINT
}
report {
    id INTEGER
    uuid TEXT
    user_id INTEGER
    project_id INTEGER
    head_id INTEGER
    version_id INTEGER
    testbed_id INTEGER
    adapter INTEGER
    start_time BIGINT
    end_time BIGINT
    created BIGINT
}
report_benchmark {
    id INTEGER
    uuid TEXT
    report_id INTEGER
    iteration INTEGER
    benchmark_id INTEGER
}
testbed {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    name TEXT
    slug TEXT
    created BIGINT
    modified BIGINT
    archived BIGINT
}
threshold {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    branch_id INTEGER
    testbed_id INTEGER
    measure_id INTEGER
    model_id INTEGER
    created BIGINT
    modified BIGINT
}
token {
    id INTEGER
    uuid TEXT
    user_id INTEGER
    name TEXT
    jwt TEXT
    creation BIGINT
    expiration BIGINT
}
user {
    id INTEGER
    uuid TEXT
    name TEXT
    slug TEXT
    email TEXT
    admin BOOLEAN
    locked BOOLEAN
    created BIGINT
    modified BIGINT
}
version {
    id INTEGER
    uuid TEXT
    project_id INTEGER
    number INTEGER
    hash TEXT
}

user ||--o{ token : "has"
user ||--o{ organization_role : "has"
user ||--o{ project_role : "has"
user ||--o{ report : "writes"

organization ||--o{ organization_role : "assigns"
organization ||--o{ project : "owns"
organization ||--o{ plan : "has"

project ||--o{ project_role : "assigns"
project ||--o{ version : "has"
project ||--o{ threshold : "has"
project ||--o{ testbed : "has"
project ||--o{ benchmark : "has"
project ||--o{ measure : "has"
project ||--o{ branch : "has"
project ||--o{ plot : "has"

threshold ||--o{ model : "uses"
threshold ||--o{ metric : "relates"
threshold ||--o{ boundary : "has"
model ||--o{ boundary : "has"

benchmark ||--o{ plot_benchmark : "part of"

measure ||--o{ plot_measure : "visualized"
measure ||--o{ metric : "measured"
measure ||--o{ threshold : "used"

testbed ||--o{ plot_testbed : "analyzed"
testbed ||--o{ report : "used in"

branch ||--o{ plot_branch : "analyzed"
branch ||--o{ head : "tracks"

head ||--o{ head_version : "links"
head_version ||--o{ version : "includes"

report ||--o{ metric : "generates"
report ||--o{ plot : "visualizes"
report ||--o{ version : "reports on"
report ||--o{ testbed : "runs on"

alert ||--o{ metric : "monitors"
metric ||--o{ report_benchmark : "derived from"
metric ||--o{ boundary : "has"

plot ||--o{ plot_branch : "uses"
plot ||--o{ plot_testbed : "uses"
plot ||--o{ plot_benchmark : "uses"
plot ||--o{ plot_measure : "uses"


Published: Tue, September 26, 2023 at 10:25:00 AM UTC | Last Updated: Sun, February 9, 2025 at 8:30:00 AM UTC