db pgx backend

This commit is contained in:
Pay Giesselmann
2024-07-16 17:58:01 +02:00
parent 93c515098c
commit a8aa92ad9d
31 changed files with 339 additions and 104 deletions

View File

@@ -0,0 +1,6 @@
DROP TABLE IF EXISTS job_meta;
DROP TABLE IF EXISTS configuration;
DROP TABLE IF EXISTS jobtag;
DROP TABLE IF EXISTS tag;
DROP TABLE IF EXISTS "user";
DROP TABLE IF EXISTS schema_migrations;

View File

@@ -0,0 +1,68 @@
CREATE TABLE IF NOT EXISTS job (
id SERIAL PRIMARY KEY,
job_id BIGINT NOT NULL,
cluster VARCHAR(255) NOT NULL,
subcluster VARCHAR(255) NOT NULL,
start_time BIGINT NOT NULL, -- Unix timestamp
"user" VARCHAR(255) NOT NULL,
project VARCHAR(255) NOT NULL,
"partition" VARCHAR(255) NOT NULL,
array_job_id BIGINT NOT NULL,
duration INT NOT NULL DEFAULT 0,
walltime INT NOT NULL DEFAULT 0,
job_state VARCHAR(255) NOT NULL
CHECK (job_state IN ('running', 'completed', 'failed', 'cancelled',
'stopped', 'timeout', 'preempted', 'out_of_memory')),
meta_data TEXT, -- JSON
resources TEXT NOT NULL, -- JSON
num_nodes INT NOT NULL,
num_hwthreads INT NOT NULL,
num_acc INT NOT NULL,
smt SMALLINT NOT NULL DEFAULT 1 CHECK (smt IN (0, 1)),
exclusive SMALLINT NOT NULL DEFAULT 1 CHECK (exclusive IN (0, 1, 2)),
monitoring_status SMALLINT NOT NULL DEFAULT 1 CHECK (monitoring_status IN (0, 1, 2, 3)),
mem_used_max REAL NOT NULL DEFAULT 0.0,
flops_any_avg REAL NOT NULL DEFAULT 0.0,
mem_bw_avg REAL NOT NULL DEFAULT 0.0,
load_avg REAL NOT NULL DEFAULT 0.0,
net_bw_avg REAL NOT NULL DEFAULT 0.0,
net_data_vol_total REAL NOT NULL DEFAULT 0.0,
file_bw_avg REAL NOT NULL DEFAULT 0.0,
file_data_vol_total REAL NOT NULL DEFAULT 0.0,
UNIQUE (job_id, cluster, start_time)
);
CREATE TABLE IF NOT EXISTS tag (
id SERIAL PRIMARY KEY,
tag_type VARCHAR(255) NOT NULL,
tag_name VARCHAR(255) NOT NULL,
UNIQUE (tag_type, tag_name)
);
CREATE TABLE IF NOT EXISTS jobtag (
job_id INTEGER,
tag_id INTEGER,
PRIMARY KEY (job_id, tag_id),
FOREIGN KEY (job_id) REFERENCES job (id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tag (id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "user" (
username VARCHAR(255) PRIMARY KEY NOT NULL,
password VARCHAR(255) DEFAULT NULL,
ldap SMALLINT NOT NULL DEFAULT 0, -- "ldap" for historic reasons, fills the "AuthSource"
name VARCHAR(255) DEFAULT NULL,
roles VARCHAR(255) NOT NULL DEFAULT '[]',
email VARCHAR(255) DEFAULT NULL
);
CREATE TABLE IF NOT EXISTS configuration (
username VARCHAR(255),
confkey VARCHAR(255),
value VARCHAR(255),
PRIMARY KEY (username, confkey),
FOREIGN KEY (username) REFERENCES "user" (username) ON DELETE CASCADE ON UPDATE NO ACTION
);

View File

@@ -0,0 +1,8 @@
DROP INDEX IF EXISTS job_stats;
DROP INDEX IF EXISTS job_by_user;
DROP INDEX IF EXISTS job_by_starttime;
DROP INDEX IF EXISTS job_by_job_id;
DROP INDEX IF EXISTS job_list;
DROP INDEX IF EXISTS job_list_user;
DROP INDEX IF EXISTS job_list_users;
DROP INDEX IF EXISTS job_list_users_start;

View File

@@ -0,0 +1,8 @@
CREATE INDEX IF NOT EXISTS job_stats ON job (cluster, subcluster, "user");
CREATE INDEX IF NOT EXISTS job_by_user ON job ("user");
CREATE INDEX IF NOT EXISTS job_by_starttime ON job (start_time);
CREATE INDEX IF NOT EXISTS job_by_job_id ON job (job_id);
CREATE INDEX IF NOT EXISTS job_list ON job (cluster, job_state);
CREATE INDEX IF NOT EXISTS job_list_user ON job ("user", cluster, job_state);
CREATE INDEX IF NOT EXISTS job_list_users ON job ("user", job_state);
CREATE INDEX IF NOT EXISTS job_list_users_start ON job (start_time, "user", job_state);

View File

@@ -0,0 +1 @@
ALTER TABLE user DROP COLUMN projects;

View File

@@ -0,0 +1 @@
ALTER TABLE "user" ADD COLUMN projects VARCHAR(255) NOT NULL DEFAULT '[]';

View File

@@ -0,0 +1,5 @@
ALTER TABLE job
MODIFY `partition` VARCHAR(255) NOT NULL,
MODIFY array_job_id BIGINT NOT NULL,
MODIFY num_hwthreads INT NOT NULL,
MODIFY num_acc INT NOT NULL;

View File

@@ -0,0 +1,5 @@
ALTER TABLE job
ALTER COLUMN partition TYPE VARCHAR(255),
ALTER COLUMN array_job_id TYPE BIGINT,
ALTER COLUMN num_hwthreads TYPE INT,
ALTER COLUMN num_acc TYPE INT;

View File

@@ -0,0 +1,2 @@
ALTER TABLE tag DROP COLUMN insert_time;
ALTER TABLE jobtag DROP COLUMN insert_time;

View File

@@ -0,0 +1,2 @@
ALTER TABLE tag ADD COLUMN insert_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE jobtag ADD COLUMN insert_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

View File

@@ -0,0 +1 @@
ALTER TABLE configuration MODIFY value VARCHAR(255);

View File

@@ -0,0 +1,2 @@
ALTER TABLE configuration
ALTER COLUMN value TYPE TEXT;

View File

@@ -0,0 +1,3 @@
SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE tag MODIFY id INTEGER;
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -0,0 +1,3 @@
-- SET FOREIGN_KEY_CHECKS = 0;
-- ALTER TABLE tag MODIFY id INTEGER AUTO_INCREMENT;
-- SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -0,0 +1 @@
DROP TABLE IF EXISTS job_meta;

View File

@@ -0,0 +1,20 @@
ALTER TABLE job ADD COLUMN energy REAL NOT NULL DEFAULT 0.0;
ALTER TABLE job ADD COLUMN footprint TEXT DEFAULT NULL;
ALTER TABLE job DROP flops_any_avg;
ALTER TABLE job DROP mem_bw_avg;
ALTER TABLE job DROP mem_used_max;
ALTER TABLE job DROP load_avg;
ALTER TABLE "user" RENAME TO users;
CREATE TABLE IF NOT EXISTS job_meta (
id SERIAL PRIMARY KEY,
job_id BIGINT NOT NULL,
cluster VARCHAR(255) NOT NULL,
start_time BIGINT NOT NULL, -- Unix timestamp
meta_data JSONB, -- JSON
metric_data JSONB, -- JSON
UNIQUE (job_id, cluster, start_time)
);