一、完整数据库表结构及说明
1. 用户表(User)
CREATE TABLE User (
UserID INT AUTO_INCREMENT PRIMARY KEY,
Username VARCHAR(50) UNIQUE NOT NULL,
Password VARCHAR(255) NOT NULL,
Role ENUM('user', 'ops', 'maintainer', 'admin') NOT NULL,
Department VARCHAR(50),
Email VARCHAR(100),
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
LastLogin TIMESTAMP
) ENGINE=InnoDB COMMENT '平台用户信息';
2. 机器资源表(Machine)
CREATE TABLE Machine (
MachineID VARCHAR(10) PRIMARY KEY,
IPAddress VARCHAR(15) NOT NULL,
Hostname VARCHAR(50) NOT NULL,
Status ENUM('online', 'offline', 'maintenance') DEFAULT 'online',
Cluster VARCHAR(20) COMMENT '所属集群',
CPUCores INT NOT NULL COMMENT '总CPU核心数',
MemoryGB INT NOT NULL COMMENT '总内存(GB)',
DiskSpaceGB INT COMMENT '可用磁盘空间(GB)',
LastHeartbeat TIMESTAMP COMMENT '最后心跳时间',
CONSTRAINT chk_cpu CHECK (CPUCores > 0),
CONSTRAINT chk_mem CHECK (MemoryGB > 0)
) ENGINE=InnoDB;
3. 仿真任务表(Job)
CREATE TABLE Job (
JobID VARCHAR(20) PRIMARY KEY COMMENT '格式: J[日期][序号]',
UserID INT NOT NULL,
Type VARCHAR(50) NOT NULL COMMENT '任务类型(如数据仿真/模型训练)',
Status ENUM('pending', 'running', 'paused', 'completed', 'failed', 'canceled') DEFAULT 'pending',
Priority TINYINT NOT NULL DEFAULT 10 COMMENT '1-10, 1为最高',
MaxRetries TINYINT UNSIGNED DEFAULT 3 COMMENT '最大重试次数',
EnvironmentConfig JSON COMMENT '环境配置(镜像版本、依赖库等)',
Parameters JSON COMMENT '运行时参数',
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
StartedAt TIMESTAMP COMMENT '实际开始时间',
FinishedAt TIMESTAMP COMMENT '结束时间',
FOREIGN KEY (UserID) REFERENCES User(UserID),
INDEX idx_job_user (UserID),
INDEX idx_job_status (Status)
) ENGINE=InnoDB;
4. 子任务表(Task)
CREATE TABLE Task (
TaskID VARCHAR(20) PRIMARY KEY COMMENT '格式: T[JobID后缀][序号]',
JobID VARCHAR(20) NOT NULL,
MachineID VARCHAR(10) COMMENT '实际运行的机器',
Status ENUM('pending', 'running', 'completed', 'failed') DEFAULT 'pending',
Retries TINYINT UNSIGNED DEFAULT 0 COMMENT '已重试次数',
Requires JSON COMMENT '依赖的TaskID列表',
ResourceDemand JSON NOT NULL COMMENT '资源需求(CPU/Memory)',
Progress TINYINT UNSIGNED DEFAULT 0 COMMENT '进度百分比',
LogPath VARCHAR(255) COMMENT '日志存储路径',
StartedAt TIMESTAMP,
FinishedAt TIMESTAMP,
FOREIGN KEY (JobID) REFERENCES Job(JobID),
FOREIGN KEY (MachineID) REFERENCES Machine(MachineID)