28 lines
1.2 KiB
SQL
28 lines
1.2 KiB
SQL
SET LOCAL lock_timeout = '5s';
|
|||
|
|
SET LOCAL statement_timeout = '10min';
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS ops_ingress_reject_aggregates (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
bucket_start TIMESTAMPTZ NOT NULL,
|
||
|
|
reject_reason VARCHAR(64) NOT NULL,
|
||
|
|
route_family VARCHAR(64) NOT NULL,
|
||
|
|
protocol VARCHAR(32) NOT NULL,
|
||
|
|
client_ip INET NOT NULL,
|
||
|
|
user_id BIGINT NOT NULL DEFAULT 0,
|
||
|
|
api_key_id BIGINT NOT NULL DEFAULT 0,
|
||
|
|
request_count BIGINT NOT NULL DEFAULT 0,
|
||
|
|
first_seen TIMESTAMPTZ NOT NULL,
|
||
|
|
last_seen TIMESTAMPTZ NOT NULL,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
CONSTRAINT ops_ingress_reject_aggregates_dimensions_unique UNIQUE
|
||
|
|
(bucket_start, reject_reason, route_family, protocol, client_ip, user_id, api_key_id)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_ops_ingress_reject_aggregates_bucket
|
||
|
|
ON ops_ingress_reject_aggregates (bucket_start DESC);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_ops_ingress_reject_aggregates_reason_bucket
|
||
|
|
ON ops_ingress_reject_aggregates (reject_reason, bucket_start DESC);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_ops_ingress_reject_aggregates_ip_bucket
|
||
|
|
ON ops_ingress_reject_aggregates (client_ip, bucket_start DESC);
|