pbl_runtime_ext/sql/pbl_runtime_ext.sql

62 lines
3.7 KiB
SQL
Raw Permalink 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.

-- 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="世界状态快照(掉线补齐/离线兜底)";