duf*_*far 5 tree database-design
我想以某种格式表示我的目录结构(目前我只是使用 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。
存储文件后,这些是我计划对文件进行的操作:
ls
在这条路径上做的事情。)note
。2 和 3 是我最希望发生的操作。
以下是我提出的存储这些数据的方法:
没有数据库:
/home/forest/<uuid>.json
)没有 SQL
关系型数据库管理系统
ltree
存储分层数据的类型,但我不确定这是否是我需要的。
图数据库?
而不是创建一个普通的 JSON,也许我可以生成一个 Graph DB 可以读入的格式
一旦我有了一些图形数据库对象,也许所有的操作都会变得足够快。
我的问题是:对于我的用例,存储数据的最佳方式是什么?
回复评论。
为什么你认为你需要一个数据库呢?
根据您尝试执行的操作,您可能根本不需要将数据存储在 db 中。
老实说,我不知道我是否需要数据库,我知道我希望这些数据以一种允许我相当快地执行上述定义的操作的格式存储。
你想通过将它放入数据库来实现什么?报告?分析?它会被应用程序使用吗?
我正在为 Web 应用程序执行此操作。一旦数据以我满意的方式存储,我计划创建一个 Web API(可能基于 JSON)来执行我上面列出的操作。数据将发送到客户端,并以某种方式显示在前端。
你想要每个文件 1 行吗?您还想存储哪些其他元数据?尺寸?日期?文件所有者?
是的,我想要通常与文件相关联的元数据。
一个朋友问这个,所以我在这里清理它:我不只有 1 个 JSON 文件(代表一棵树)。我可以有 n 个这样的树(它们基本上是由用户上传的,我希望它们的大小小于 100 MB。)