核心数据模型速查

想知道某业务对象对应哪张表 / 哪个 ORM 类、表之间的外键关系、或公共基类提供哪些字段时读这篇

07-参考速查 / 速查
数据模型ORMSQLAlchemy数据库表tablemodel字段外键foreign key关系ProjectPipelineTaskServiceDatasetNotebook

核心数据模型速查

本文从 myapp/models/ 派生,列出主要 ORM 类、对应数据库表名与关键关系。 字段说明只摘核心,完整字段/类型/默认值以 myapp/models/*.py 源码为准(模型字段多带中文 comment

数据库选型与迁移见『04-运维管理』『02-部署安装』段;模型与 REST API 的对应见本段 核心API速查.md

1. 模型清单(类 → 表名 → 文件 → 用途)

ORM 类 表名 文件 用途
Project project model_team.py 项目组(多租户中枢),type 区分 org / job_template / model
Project_User project_user model_team.py 项目组-用户成员桥接(多对多)
UserAttribute user_attribute user_attributes.py 用户扩展属性
Repository repository model_job.py 镜像仓库(凭据)
Images images model_job.py Docker 镜像
Job_Template job_template model_job.py 任务模板(pipeline 算子)
Pipeline pipeline model_job.py 任务流(DAG)
Task task model_job.py 任务流中的单个任务节点
RunHistory run model_job.py 定时调度运行记录
Workflow workflow model_job.py argo workflow 运行实例(继承 Crd
Docker docker model_docker.py 在线镜像构建(调试容器)
Notebook notebook model_notebook.py 在线 IDE(Jupyter/VSCode 等)
Service service model_serving.py 在线服务(内部服务)
InferenceService inferenceservice model_serving.py 推理服务
Dataset dataset model_dataset.py 数据集(全局资产,按版本/分区管理)
Aihub aihub model_aihub.py AIHub 模型市场条目
Chat chat model_chat.py 对话智能体配置
ChatLog chat_log model_chat.py 对话记录
Ingress ingress model_llm_ingress.py LLM 网关入口/路由
ETL_Pipeline etl_pipeline model_etl_pipeline.py ETL 任务流
ETL_Pipeline_Run etl_pipeline_run model_etl_pipeline.py ETL 任务流运行记录
ETL_Task etl_task model_etl_pipeline.py ETL 任务节点
Service_Pipeline service_pipeline model_service_pipeline.py 服务编排流
NNI nni model_nni.py 超参搜索实验
Training_Model model model_train_model.py 训练模型登记
Model_define model_define model_model_define.py 模型定义
Metadata_table metadata_table model_metadata.py 库表元数据
Metadata_metric metadata_metric model_metadata_metric.py 指标元数据
Dimension_table dimension model_dimension.py 维表
Node node model_node.py 集群机器节点
Storage storage model_storage.py 存储资源
Pod pod model_pod.py Pod 记录
RentalInstance rental_instance model_rental_instance.py 算力租赁实例
Bill bill model_bill.py 账单
Invoice invoice model_invoice.py 发票
Approval approval model_approval.py 审批单
Message message model_message.py 站内消息
Log logs log.py 操作日志
Sqllab_Query sqlab_query model_sqllab_query.py SQL 查询记录(注意表名拼写为 sqlab_query
Favorite favorite favorite.py 收藏

说明:用户表 ab_user 是 Flask-AppBuilder 内置用户表(在 ab_* 系列权限表中),不在 myapp/models/ 业务模型里,但被大量模型外键引用。

2. 关系图(以 Project 为多租户中枢、ab_user 为用户中枢)

三条主链(已核对外键):

Project (project.id)
 ├─ Project_User.project_id        ──┐ 项目组-用户多对多桥接
 │  Project_User.user_id ─→ ab_user.id ┘
 ├─ Pipeline.project_id            ─→ Task.pipeline_id ─→ RunHistory.pipeline_id
 │                                    Task.job_template_id ─→ Job_Template.id
 ├─ Job_Template.project_id           Job_Template.images_id ─→ Images.id
 │                                    Images.repository_id ─→ Repository.id(Images 无 project_id)
 ├─ Notebook.project_id
 ├─ Service.project_id / InferenceService.project_id
 ├─ NNI.project_id / Docker.project_id / Pod.project_id
 ├─ Model_define.project_id / Training_Model.project_id
 ├─ Service_Pipeline.project_id
 └─ ETL_Pipeline.project_id ─→ ETL_Pipeline_Run.pipeline_id (FK → etl_pipeline.id)
                               ETL_Task.etl_pipeline_id (普通整型列,见下注)

ab_user (ab_user.id)
 ├─ Log.user_id / Approval.user_id / Bill.user_id / Pod.user_id / UserAttribute.user_id
 └─ 多数模型经 AuditMixinNullable 关联 created_by_fk / changed_by_fk ─→ ab_user.id

已核对的外键(ForeignKey(...)):

  • Project_User.project_id → project.idProject_User.user_id → ab_user.id
  • Pipeline.project_id → project.idTask.pipeline_id → pipeline.idTask.job_template_id → job_template.idRunHistory.pipeline_id → pipeline.id
  • Job_Template.project_id → project.idJob_Template.images_id → images.id
  • Images.repository_id → repository.id(注意:Images project_id 外键,镜像不直属项目组,经 Job_Template.images_id 间接关联)
  • Notebook/Service/InferenceService/NNI/Docker/Model_define/Training_Model/Service_Pipeline.project_id → project.id
  • Pod.project_id → project.idPod.user_id → ab_user.id
  • ETL_Pipeline.project_id → project.idETL_Pipeline_Run.pipeline_id → etl_pipeline.id
  • Log.user_idApproval.user_idBill.user_idUserAttribute.user_id → ab_user.id

⚠️ 注意:ETL_Task.etl_pipeline_id 是普通整型列、不是外键(FK 定义在 myapp/models/model_etl_pipeline.py:173 附近被注释),逻辑上指向 etl_pipeline.idDataset不含 project_id,是全局/共享数据资产目录。

3. 公共基类与混入

多数模型同时混入以下基类(见 myapp/models/base.pymyapp/models/helpers.py):

  • MyappModelBasebase.py):提供共享的 label_columns 字典(列名 → 中文显示名,前端/列表展示用)和 get_default_node_selector()(按 GPU 申请推导节点调度标签)等公共能力。该基类仅含上述两项(myapp/models/base.py 共 339 行,唯一方法为 base.py:316get_default_node_selector),无 lab/html 展示方法。
  • AuditMixinNullablehelpers.py:277,继承 FAB 的 AuditMixin):提供审计列 created_onchanged_on(自动更新),以及 created_by_fkchanged_by_fk(外键 → ab_user.id,默认取当前用户),并暴露 created_by / changed_by 关系与 creator / changed_by_ / modified 等属性。
  • ImportMixinhelpers.py:31):导入/导出支持,被 PipelineTaskETL_TaskModel_defineService_Pipeline 等混入。

本速查为代码派生总览,字段 / 关系以 myapp/models 源码为准,仅供导航。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki