账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    网盘系统的mysql表如何设计?
    63
    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 那么该怎么处理这种大数据,(大家别喷我等到了那个数量级再来处理,我就是想知道到了这种数量基本该怎么处理,谢谢)
    在此先谢谢回答的朋友们

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 大王别跑 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部