V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
SjwNo1
V2EX  ›  MySQL

寻求一个文件存储 模型设计思路

  •  
  •   SjwNo1 · 2020-09-30 17:19:24 +08:00 · 2867 次点击
    这是一个创建于 1526 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大佬们帮忙想想思路,自己想了几个都不是很好
    需求条件:
    1. 设计上: 文件夹理论上可以无限嵌套,当前路径文件夹和文件并存
    2. 功能上:可以统计某个文件夹下文件 /文件夹数量等信息

    我的想法:
    每个文件夹带 parent_id,存储的文件和文件夹 id 关联, 存在的问题是层级很深的情况下,想要统计文件信息很麻烦,现在想优化但是无从下手了。。
    8 条回复    2020-09-30 18:18:47 +08:00
    DoUSeeMe
        1
    DoUSeeMe  
       2020-09-30 17:27:03 +08:00
    这种?
    folder_1
    - folder_1_folder_1
    - folder_1_folder_1_folder_1
    ...
    - folder_1_folder_1_file_1
    - folder_1_file_1
    Jooooooooo
        2
    Jooooooooo  
       2020-09-30 17:29:11 +08:00
    不如直接研究下 linux 那种 inode 的做法
    hakono
        3
    hakono  
       2020-09-30 17:41:29 +08:00 via Android
    这种做法坑太多了,你这样搞,文件夹有几层就得运行几次 sql 查询才能最终定位到需要的项目

    还不如像 s3 那样,路径加文件名的完整路径本身作为一个字段, 即直接把 /folder1/folder2/file.txt 这串字符串存进字段里,知道完整路径能很快查出来
    也支持一定的模糊查询,不过速度应该不是非常快
    laminux29
        4
    laminux29  
       2020-09-30 17:53:03 +08:00
    通过对你水平的猜测,我不建议你自己去做文件系统的模型设计,先不说这对学识需求有多高的门槛,就算理论知识你全懂,在时间上也不划算。

    如果你仅仅只是要存储文件,我建议你针对你们的需求,选择一款合适的文件系统,并且有 api 的那种,你们的系统通过文件系统的 api,对接或集成,应该能满足你们系统的大部分需求。

    如果是要做一整套存储系统,现在有很多针对文件的存储数据库,以及缓存系统等,你们都可以先分析一下这些可白嫖的组件,功能够不够用。
    est
        5
    est  
       2020-09-30 17:59:34 +08:00
    s3 那种你看起来有路径,其实就是直接写死的 "/a/b/c/d" 这种 字符串。文件存储就变成了 key-value 。其中 key 为路径,value 就是类似 inode 。

    要遍历某个路径下的所有文件,就是个前缀匹配
    wuliaoshixia
        6
    wuliaoshixia  
       2020-09-30 18:02:11 +08:00
    用 minio 香吗?
    SjwNo1
        7
    SjwNo1  
    OP
       2020-09-30 18:17:15 +08:00
    谢谢各位
    des
        8
    des  
       2020-09-30 18:18:47 +08:00
    树形结构直接闭包表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3350 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:38 · PVG 19:38 · LAX 03:38 · JFK 06:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.