开发文档Umo Office Convert数据库

数据库说明

本文描述 Umo Office Convert 服务所使用的数据库设计。该服务使用 MySQL 数据库来存储文档转换任务的相关信息。您也可以参考 MySQL 的实现,使用其他数据库来存储数据。

数据库配置

数据库配置信息存储在环境变量中,可以通过 .env 文件进行配置,详细配置项见:环境变量-数据库配置

表结构

convert_tasks 表

该表用于存储文档转换任务的信息。

字段名类型说明约束
idVARCHAR(255)任务 IDPRIMARY KEY
filenameVARCHAR(255)原始文件名
mimeVARCHAR(255)文件 MIME 类型
sizeINT原始文件大小(字节)
pathVARCHAR(255)原始文件路径
hashVARCHAR(255)文件哈希值
converted_sizeINT转换后文件大小(字节)
converted_pathVARCHAR(255)转换后文件路径
statusVARCHAR(255)转换状态
converted_atTIMESTAMP转换时间DEFAULT CURRENT_TIMESTAMP

status 字段可能的值包括:

  • uploaded: 文件已上传
  • converted: 转换完成
  • failed: 转换失败

数据库初始化

服务启动时会自动检查并创建所需的数据表。初始化代码位于 src/utils/mysql.mjs 文件中。

数据流程

  1. 当通过接口获取到转换任务时,系统会创建一个新的转换任务记录。如果通过文件 hash 值匹配到已转换的任务,则不会创建新任务,从缓存中直接获取已转换的文件
  2. 转换完成后,会更新转换后的文件信息和状态
  3. 用户可以通过任务 ID 查询转换任务信息及结果

缓存机制

系统使用文件哈希值来实现缓存机制。当用户上传相同的文件时,系统会检查数据库中是否已存在相同哈希值的转换任务,如果存在且转换成功,则直接返回已转换的文件,避免重复转换。

数据备份建议

建议定期备份 convert_tasks 表数据,以防数据丢失。可以使用以下命令进行备份:

mysqldump -u [用户名] -p [数据库名] convert_tasks > convert_tasks_backup_$(date +%Y%m%d).sql