网盘系统的mysql表如何设计?

发布于 2022-09-06 05:16:49 字数 2434 浏览 16 评论 0

大三学生,和小伙伴们正在弄网盘系统的毕设,主要使用vue+mysql+PHP+redis,在设计表的时候遇到问题,前来请教一下做过网盘项目的前辈
1、这个表是专门存储文件信息的,表结构如下

CREATE TABLE `wp_origin` (
`origin_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '递增主键',
`origin_md5` char(32) NOT NULL DEFAULT '' COMMENT 'md5值',
`origin_size` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '文件大小',
`origin_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '引用计数',
`origin_path` varchar(2000) NOT NULL DEFAULT '' COMMENT '保存路径',
`add_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`user_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '上传者id',
`origin_status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态[1=正常][2=不允许上传][3=未经允许的上传][4=已屏蔽]',
PRIMARY KEY (`origin_id`),
KEY `origin_md5` (`origin_md5`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 COMMENT='源文件';

2、这个表是用来存储用户的网盘文件信息的,表结构如下

CREATE TABLE `wp_file` (
`file_id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL DEFAULT '0',
`file_name` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '文件名称',
`parent_path` varchar(1000) COLLATE utf8_bin NOT NULL DEFAULT '/' COMMENT '父级路径',
`file_type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '文件类型',
`file_size` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '文件大小',
`status` tinyint(1) unsigned NOT NULL DEFAULT '5' COMMENT '文件状态  [3=删除中][4=回收站][5=正常状态][6=已分享]',
`add_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',
`is_link` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0为未分享,1为已分享',
`is_dir` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否是文件夹,[0=文件],[1=文件夹]',
`delete_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '删除时间',
`origin_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT ' 源文件id',
`origin_path` varchar(2000) COLLATE utf8_bin DEFAULT '' COMMENT 'oss保存路径',
PRIMARY KEY (`file_id`),
KEY `uid` (`user_id`) USING BTREE,
KEY `parent_path` (`parent_path`(255)) USING BTREE,
KEY `file_name` (`file_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=825 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用户文件信息表';

问题主要如下
1、上面两个表设计是否合理,如不合理,该怎样修改?
2、考虑到网盘的用户数量级,像百度云盘这些,数据量是很大的,我的想法是要么mysql分库分表,要么上面两个表存mongodb,然后相关join查询在服务层实现,(mongodb分布式)不知道这个做法是否正确?如果不用mongodb 那么该怎么处理这种大数据,(大家别喷我等到了那个数量级再来处理,我就是想知道到了这种数量基本该怎么处理,谢谢)
在此先谢谢回答的朋友们

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

毁虫ゝ 2022-09-13 05:16:49

首先作为毕设 , 我感觉这个表设计本身没啥硬伤 .
其次是 , 百度云是用的mongodb , 一次mongodb的分享会上听过百度云的人分享过一些技术 .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文