110 lines
4.6 KiB
SQL
110 lines
4.6 KiB
SQL
-- =============================================================================
|
|
-- E2E test database schema for the ``sientia_data`` namespace.
|
|
--
|
|
-- Mirrors the production DDL one-to-one so any change in production can be
|
|
-- pasted directly into this file. The conftest fixture loads this SQL into the
|
|
-- testcontainers Postgres before each test run.
|
|
--
|
|
-- Notes on differences from production:
|
|
-- * Tables that are partitioned in production (e.g. ``simple_metrics``,
|
|
-- ``transformed_data``, ``drift_metrics``) are created as plain tables
|
|
-- here because the test suite does not exercise partition pruning.
|
|
-- * Indexes are intentionally omitted; tests rely on functional behavior,
|
|
-- not query plans.
|
|
-- =============================================================================
|
|
|
|
CREATE SCHEMA IF NOT EXISTS sientia_data;
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- sientia_data.laborious_data
|
|
-- -----------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS sientia_data.laborious_data (
|
|
model_id int4 NOT NULL,
|
|
variable text NOT NULL,
|
|
value numeric NULL,
|
|
"timestamp" timestamptz NOT NULL,
|
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
CONSTRAINT unique_timestamp_variable
|
|
UNIQUE (model_id, "timestamp", variable)
|
|
);
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- sientia_data.predictions
|
|
-- -----------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS sientia_data.predictions (
|
|
model_id int4 NOT NULL,
|
|
prediction numeric NULL,
|
|
prediction_confidence numeric NOT NULL,
|
|
response_time numeric NOT NULL,
|
|
prediction_status text NOT NULL,
|
|
"timestamp" timestamptz NOT NULL,
|
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
"comments" text NULL,
|
|
CONSTRAINT unique_model_id_timestamp
|
|
UNIQUE (model_id, "timestamp")
|
|
);
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- sientia_data.transformed_data
|
|
-- Production: PARTITION BY RANGE (created_at). Tests use a plain table.
|
|
-- -----------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS sientia_data.transformed_data (
|
|
id SERIAL NOT NULL,
|
|
model_id int4 NOT NULL,
|
|
variable text NOT NULL,
|
|
value numeric NULL,
|
|
"timestamp" timestamptz NOT NULL,
|
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (id, created_at)
|
|
);
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- sientia_data.drift_metrics
|
|
-- Production: PARTITION BY RANGE (created_at). Tests use a plain table.
|
|
-- -----------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS sientia_data.drift_metrics (
|
|
id SERIAL NOT NULL,
|
|
model_id text NOT NULL,
|
|
feature text NULL,
|
|
method text NOT NULL,
|
|
value numeric NOT NULL,
|
|
alert bool NOT NULL,
|
|
chunk_index int4 NOT NULL,
|
|
chunk_start_date text NOT NULL,
|
|
chunk_end_date text NOT NULL,
|
|
accurate bool NOT NULL,
|
|
"timestamp" timestamptz NULL,
|
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (id, created_at)
|
|
);
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- sientia_data.simple_metrics
|
|
-- Production: PARTITION BY RANGE (created_at). Tests use a plain table.
|
|
-- -----------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS sientia_data.simple_metrics (
|
|
id SERIAL NOT NULL,
|
|
model_id text NOT NULL,
|
|
metric text NOT NULL,
|
|
value numeric NOT NULL,
|
|
"timestamp" timestamptz NULL,
|
|
data_size int4 NOT NULL,
|
|
interval_minutes int4 NOT NULL,
|
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (id, created_at)
|
|
);
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- sientia_data.log_retrain
|
|
-- No primary key in production; all columns nullable.
|
|
-- -----------------------------------------------------------------------------
|
|
CREATE TABLE IF NOT EXISTS sientia_data.log_retrain (
|
|
mlflow_experiment_id int8 NULL,
|
|
mlflow_run_id text NULL,
|
|
model_id text NULL,
|
|
model_name text NULL,
|
|
status text NULL,
|
|
"timestamp" timestamptz NULL,
|
|
"version" text NULL
|
|
);
|