小编duf*_*far的帖子

如何最好地将目录树存储在数据库中?

我想以某种格式表示我的目录结构(目前我只是使用 JSON。)

这是示例 JSON 的外观。对于那些好奇的人,它是使用 unix tree 命令生成的:tree /path/to/folder -J --noreport -h.

{
    ...
    "type":"directory",
    "name":"dev",
    "size":4096,
    "contents":[
        {"type":"directory","name":"protocols","size":4096, "contents":[]},
        {"type":"file","name":"architecture.txt","size":4716},
        {"type":"file","name":"exceptions.py","size":31263},
        {"type":"file","name":"models.js","size":101882},
        {"type":"file","name":"proxy.cpp","size":29097},
        {"type":"file","name":"keylogfile.xyz","size":7889},
        {"type":"file","name":"Readme.txt","size":8857},
    ]
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以这只是将某些路径的整个文件夹结构表示为 JSON。

我可以有许多这样的单独 JSON 文件,每个文件代表一个目录树。这些文件之间没有关联/链接。

在标准 Windows“C:\”分区上运行 tree 命令时,我得到一个大约 30 MB 的 JSON 文件。所以我认为我们可以假设用户上传的最大文件大小约为 100 MB。


存储文件后,这些是我计划对文件进行的操作:

  1. 获取整个文件。
  2. 给定一条路径,获取它的直接子项(类似于ls在这条路径上做的事情。)
  3. 给定路径,获取路径的完整子树。
  4. 修改某个项目的元数据,比如更改其名称或添加新的名称note

2 和 3 是我最希望发生的操作。


以下是我提出的存储这些数据的方法:

  1. 没有数据库:

    • 将文件按原样存储在磁盘 ( /home/forest/<uuid>.json)
    • 操作 1 变得快速而简单 - 只需发送整个文件
    • 但其他的可能会变慢,因为它们都涉及首先解析整个 JSON,然后对其进行迭代。
  2. 没有 SQL

    • 我以前从未使用过任何 SQL 数据库(只阅读了一些关于它们的用例等的帖子) …

tree database-design

5
推荐指数
1
解决办法
8007
查看次数

标签 统计

database-design ×1

tree ×1