跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 想写个特别特别简单的网盘系统? 数据库设计这样可以吗
未分類
2 10 月 2020

想写个特别特别简单的网盘系统? 数据库设计这样可以吗

想写个特别特别简单的网盘系统? 数据库设计这样可以吗

資深大佬 : zxCoder 5

没事想写写小项目熟悉一下 go 语言,就想到写一个不像网盘的网盘。。。 需求特别简单。。。就能上传下载文件,把目录,文件列表展示出来就行。 目前想到的数据库表设计是这样的

  • 目录(比如 /ppt 这样)
  • 类型(文件 /目录)
  • 父目录
  • 创建时间
  • 最近修改时间
  • 文件类型(若是文件,比如文本,图片,视频)
  • 文件大小(若是文件)
  • 文件 md5(若是文件)
  • 文件实际存放位置(若是文件)

不考虑其他复杂的情况,这个设计可以吗,求各位大神指点

大佬有話說 (11)

  • 資深大佬 : cmdOptionKana

    假设有一个目录 /工作 /项目 A/重要 /
    另外有一个目录 /工作 /项目 B/重要 /

    如果你要列出项目 B 的重要文件夹下的全部文件,怎么查询?感觉你现在的结构不太好操作。

    可以考虑目录用完整路径,也就是直接把 “/工作 /项目 A/重要 /” 字符串作为目录,不需要父目录。

  • 資深大佬 : cmdOptionKana

    另外可以考虑增加一个“删除时间”,用来实现垃圾桶功能,也就是说删除时仅标记删除时间,放在垃圾桶里,让用户后悔的机会。(当然,这个功能可以等后面有时间再做,反正先把删除时间安排上,日后想加垃圾桶功能就不需要改表了)

    文件类型可以考虑采用 MIME 标准,参考 https://developer.mozilla.org/zh-CN/docs/Glossary/MIME_type

    另外,可能还需要 id 和文件名。

  • 資深大佬 : Vneix

    类似这个吗

    https://larsjung.de/h5ai/

  • 資深大佬 : Akkuman

    建议真实文件数据专门加一层抽象出来

  • 主 資深大佬 : zxCoder

    @cmdOptionKana
    我的目录字段指的就是说完整目录,比如你举得这个例子,我会存

    /工作
    /工作 /项目 A
    /工作 /项目 B
    /工作 /项目 A/重要
    /工作 /项目 B/重要
    /工作 /项目 A/重要 /文件 A.jpg 父目录为 /工作 /项目 A/重要
    /工作 /项目 B/重要 /文件 B.jpg 父目录为 /工作 /项目 B/重要

    这样子,所以如果我想查项目 B 重要文件夹下的所有文件,我就得全表查父目录为 /工作 /项目 B/重要 的所有项了,好像效率会比较低

  • 主 資深大佬 : zxCoder

    @Akkuman 请问可以具体一点吗,不太理解什么意思,是说不要直接存文件实际存放地址吗

  • 資深大佬 : love

    既然是简单的网盘,为啥不用实际的文件系统呢,根本不需要数据库,直接读文件列表就行了

  • 資深大佬 : angryfish

    不用想那么多,直接干就是了,做的过程中发现问题再改

  • 主 資深大佬 : zxCoder

    @love 好像很有道理。。。 哈哈哈,就当作是没事找事吧

  • 主 資深大佬 : zxCoder

    @angryfish 有道理!

  • 資深大佬 : baobao1270

    可以试试这样设计
    int id,
    string key,
    string sha256

    三个字段够了,目录和文件名合并为 key,查找时用 LIKE path% 语句查询 key 前缀即可,然后所有文件都保存在同一目录下并以 sha256 命名,不要带后缀名,形如 /path/to/files/(sha256)。文件的类型可以使用第三方库根据后缀名或文件内容推断,文件类型与大小直接用 fs api 读取,数据库里没必要冗余储存。如果确实需要冗余储存建议上 redis

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具