62 lines
3.7 KiB
SQL
62 lines
3.7 KiB
SQL
-- pbl_runtime_ext 表 DDL(自动生成,与 apps/pbls/scripts/ddl/pbls_tables.sql 同源)
|
||
CREATE TABLE IF NOT EXISTS `pbl_runtime_event` (
|
||
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头),
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键,
|
||
`event_uid` VARCHAR(32) NOT NULL COMMENT "事件UID",
|
||
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
|
||
`world_id` BIGINT UNSIGNED NOT NULL COMMENT "世界",
|
||
`actor_id` VARCHAR(32) NOT NULL COMMENT "触发者",
|
||
`event_type` VARCHAR(64) NOT NULL COMMENT "事件类型",
|
||
`payload_json` LONGTEXT NULL COMMENT "事件体",
|
||
`causation_id` VARCHAR(32) NOT NULL COMMENT "因果链",
|
||
`state_version` BIGINT NOT NULL DEFAULT 0 COMMENT "状态版本",
|
||
`seq` BIGINT NOT NULL DEFAULT 0 COMMENT "会话内单调序号",
|
||
`occurred_at` DATETIME NOT NULL COMMENT "发生时间",
|
||
`created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)",
|
||
`updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)",
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_re_uid` (`tenant_id`, `event_uid`, `occurred_at`),
|
||
KEY `idx_re_session_seq` (`tenant_id`, `session_id`, `seq`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="运行时事件(append-only,按月 RANGE 分区)",
|
||
KEY `idx_re_part` (`occurred_at`)
|
||
PARTITION BY RANGE COLUMNS(`occurred_at`) (
|
||
PARTITION p2026 VALUES LESS THAN ('2026-01-01'),
|
||
PARTITION p2027 VALUES LESS THAN ('2027-01-01'),
|
||
PARTITION p2028 VALUES LESS THAN ('2028-01-01'),
|
||
PARTITION p2029 VALUES LESS THAN ('2029-01-01'),
|
||
PARTITION p2030 VALUES LESS THAN ('2030-01-01'),
|
||
PARTITION p2031 VALUES LESS THAN ('2031-01-01')
|
||
PARTITION pmax VALUES LESS THAN (MAXVALUE)
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS `pbl_entity_state` (
|
||
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头),
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键,
|
||
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
|
||
`entity_id` VARCHAR(32) NOT NULL COMMENT "实体标识",
|
||
`state_json` LONGTEXT NULL COMMENT "状态",
|
||
`state_version` BIGINT NOT NULL DEFAULT 0 COMMENT "单调版本",
|
||
`checksum` VARCHAR(32) NOT NULL COMMENT "状态摘要",
|
||
`updated_by` VARCHAR(32) NOT NULL COMMENT "写入者",
|
||
`created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)",
|
||
`updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)",
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_es` (`tenant_id`, `session_id`, `entity_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="实体状态(服务端权威,state_version 客户端禁写)";
|
||
|
||
CREATE TABLE IF NOT EXISTS `pbl_world_state_snapshot` (
|
||
`tenant_id` VARCHAR(32) NOT NULL NOT NULL COMMENT 租户ID(强制打头),
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键,
|
||
`session_id` BIGINT UNSIGNED NOT NULL COMMENT "会话",
|
||
`snapshot_uid` VARCHAR(32) NOT NULL COMMENT "快照UID",
|
||
`state_fingerprint` VARCHAR(32) NOT NULL COMMENT "状态指纹",
|
||
`entities_json` LONGTEXT NULL COMMENT "实体集",
|
||
`events_through_seq` BIGINT NOT NULL DEFAULT 0 COMMENT "截至序号",
|
||
`reason` VARCHAR(64) NOT NULL COMMENT "触发原因",
|
||
`created_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "创建时间(应用层写入)",
|
||
`updated_at` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT "更新时间(应用层写入)",
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_wss_uid` (`tenant_id`, `snapshot_uid`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT="世界状态快照(掉线补齐/离线兜底)";
|
||
|