Files
msgexchange-v2/src/main/resources/db/migration/V1.0.0__own_pg_pipeline.sql
T
windyboyandCursor 7ccdd00a31 docs: 统一中间件定位与 JDBC 轮询主路径口径
Align README, architecture, design, config comments, and ingress docs
with the upstream message-processing middleware model: external CIIMS write
to CMINMSGS, JDBC poll as production ingress, HTTP /cminmsgs/send as compat.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-07 10:27:44 +08:00

80 lines
4.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================
-- 自有 PostgreSQL 库(唯一自有数据库)· ACM2-12 定稿口径
-- ---------------------------------------------------------------------
-- 存储边界(ACM2-12,取代 ACMA-8 v4「MySQL 六辅助表」口径,原 MySQL V2.0.0
-- 六表脚本已删除,定义见 git 历史):
-- · 自有 PG:全部内部状态 —— 消息管道(PROC_STATE / MSG_EVENT+ 调度与请求
-- PUMP_JOB / REQ_TRACK+ 21 类静态主数据(REF_MASTER)。本地事务只在此库。
-- · 共享 MySQLcdairport,他人系统库):仅信箱 DML —— 上游外部写 CMINMSGS
-- 本系统 JDBC 轮询读 + 处理回填;出站写 COUTMSGS(他人读取发送);
-- 本系统不在此建表/schema(迁移不覆盖)。
-- · Redis:航班动态 flightInfo + 快照 SCHD_GENLua 原子,另行脚本)。
-- · FLIGHT_STATE(阶段 B 权威):缓做,不落表(Redis 永续动态权威)。
-- 21 类静态表 REF_MASTER 为通用 rtype/rkey 形态(SOURCE 审计;gen/SCHD_GEN
-- 已迁 Redis,不再需要 VERSION/CAS 列)。
-- 影子对拍:本库开独立 schema/实例;共享信箱只读水位/回放(见 ACM2-12 影响面)。
-- =====================================================================
-- ① 处理伴生状态(取消息侧;与共享库 CMINMSGS 一一对应,CMINMSGS_ID 沿用其主键;
-- 入队由 JDBC 轮询发现新信后写入,非本系统创建 CMINMSGS 原文)
CREATE TABLE PROC_STATE (
CMINMSGS_ID BIGINT PRIMARY KEY,
STATE VARCHAR(16) NOT NULL, -- PENDING/FAILED/SUCCEEDED/SKIPPED/DEAD
IDENTITY_KEY VARCHAR(200), -- SNDR|TYPE|STYP|SEQNdecode 后首次绑定(I3
ATTEMPTS INT NOT NULL DEFAULT 0,
NEXT_ATTEMPT_AT TIMESTAMP,
ERROR_CLASS VARCHAR(20), -- MALFORMED/CODEC_ERROR/EXHAUSTED/INFRA/UNSUPPORTED
LAST_ERROR VARCHAR(1000),
UPDATED_AT TIMESTAMP NOT NULL,
CONSTRAINT uk_proc_identity UNIQUE (IDENTITY_KEY)
);
CREATE INDEX idx_proc_head ON PROC_STATE (STATE, CMINMSGS_ID); -- 主泵队头查询(I1
-- ② 统一投递事件 outbox(发消息侧)
CREATE TABLE MSG_EVENT (
EVENT_ID BIGSERIAL PRIMARY KEY,
TARGET VARCHAR(30) NOT NULL, -- KAFKA:msg / KAFKA:schdA起);ES:flight_hts / REDIS:flightInfoB起)
PARTITION_KEY VARCHAR(64), -- schd 事件恒为 FLID
PAYLOAD_JSON TEXT NOT NULL,
STATE VARCHAR(16) NOT NULL, -- PENDING/SENT/DEAD
ATTEMPTS INT NOT NULL DEFAULT 0,
NEXT_ATTEMPT_AT TIMESTAMP,
ERROR_CLASS VARCHAR(20),
LAST_ERROR VARCHAR(1000),
CREATED_AT TIMESTAMP NOT NULL
);
CREATE INDEX idx_evt_head ON MSG_EVENT (TARGET, STATE, EVENT_ID); -- 每 target 队头(I1 双层)
-- ③ 泵作业调度记录(作业不插队:仅在消息队头空闲/退避窗口由主泵执行,决策 1 修订)
CREATE TABLE PUMP_JOB (
JOB_ID BIGSERIAL PRIMARY KEY,
KIND VARCHAR(20) NOT NULL, -- ARCHIVE / HISTORY_SWEEP / PROJECTION_REBUILD
STATE VARCHAR(16) NOT NULL, -- QUEUED/RUNNING/DONE/FAILED
CREATED_AT TIMESTAMP NOT NULL,
UPDATED_AT TIMESTAMP NOT NULL,
LAST_ERROR VARCHAR(1000)
);
-- ④ 15 类请求状态机(Reference & Query 域;与共享库 COUTMSGS 跨库:
-- 先落 COUTMSGS 成功 → 再标 SENT,补偿重扫,最终一致)
CREATE TABLE REQ_TRACK (
REQ_ID BIGSERIAL PRIMARY KEY,
REQ_TYPE VARCHAR(20) NOT NULL,
PARAMS_JSON TEXT NOT NULL,
STATE VARCHAR(16) NOT NULL, -- REGISTERED/SENT/WAITING/DONE/EXPIRED
COUTMSGS_ID BIGINT, -- U18 修正:BIGINT(原 MySQL 版 INT
SENT_AT TIMESTAMP,
COMPLETED_AT TIMESTAMP
);
CREATE INDEX idx_req_open ON REQ_TRACK (REQ_TYPE, STATE);
-- ⑤ 21 类静态主数据(SOURCE=ADMINAPI/AODB/PIPELINE 审计;弱事务 upsert
CREATE TABLE REF_MASTER (
RTYPE VARCHAR(20) NOT NULL, -- AIRL/ARPT/...
RKEY VARCHAR(64) NOT NULL,
PAYLOAD_JSON TEXT NOT NULL,
SOURCE VARCHAR(20) NOT NULL,
REFRESHED_AT TIMESTAMP NOT NULL,
PRIMARY KEY (RTYPE, RKEY)
);