一、文件存储源模型设计
文件服务会对接多种文件存储方式(如:本地存储、minio存储、ks3存储、阿里云存储等),对于这些存储方式使用持久化的方式进行动态管理,实现存储方式的注册、修改、删除等操作。数据模型设计如下:
CREATE TABLE IF NOT EXISTS `file_source` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL COMMENT '文件源名称',
`fs_params` text NOT NULL COMMENT '文件源配置信息',
`platform` varchar(50) NOT NULL COMMENT '文件源所属平台',
`description` varchat(255) DEFAULT "" COMMENT '数据源描述' ,
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY index_name (`name`),
) COMMENT='文件源信息管理表';
该表主要用于存储文件储存源的连接信息。
二、文件存储业务管理表
由于文件系统需要对接多个业务线,要求不同的业务线要实现数据的隔离,因此业务管理表主要用于管理业务类型,数据模型设计如下:
CREATE TABLE IF NOT EXISTS `business` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`biz_name` varchar(50) NOT NULL COMMENT '业务名称',
`description` text DEFAULT "" COMMENT '业务描述' ,
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY index_name (`biz_name`),
) COMMENT='业务管理表';
三、文件管理表
主要用于保存上传的文件信息,并根据业务类型做存储隔离。
CREATE TABLE IF NOT EXISTS `file_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`fs_id` bigint(20) NOT NULL,
`biz_id` varchar(64) DEFAULT NULL COMMENT '业务ID',
`file_type` varchar(255) DEFAULT 'IMAGE' COMMENT '数据类IMAGE:图片;VIDEO:视频;AUDIO:音频;DOC:文档;OTHER:其他}',
`md5` varchar(255) DEFAULT NULL COMMENT '文件md5值',
`file_name` varchar(255) DEFAULT '' COMMENT '唯一文件名',
`original_name` varchar(255) DEFAULT '' COMMENT '原始文件名',
`size` bigint(20) DEFAULT '0' COMMENT '大小',
`content_type` varchar(128) NOT NULL COMMENT 'HTTP响应类型',
`url` varchar(255) NOT NULL COMMENT '文件访问链接',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE
) COMMENT='文件信息管理表';