【发布时间】:2009-05-07 09:28:30
【问题描述】:
存储文件结构以及文件(例如 Zip 文件)的最佳方式是什么?目前每个文件都是 MySQL 数据库中的一行,但显然无法从中读取结构。我想避免存储二进制文件。所有文件都应该是纯文本。每个 zip/文件结构对于提交它的用户都是私有的。
【问题讨论】:
-
请提供更多详细信息。这些文件在做什么?他们的目的是什么?
存储文件结构以及文件(例如 Zip 文件)的最佳方式是什么?目前每个文件都是 MySQL 数据库中的一行,但显然无法从中读取结构。我想避免存储二进制文件。所有文件都应该是纯文本。每个 zip/文件结构对于提交它的用户都是私有的。
【问题讨论】:
如果你想要结构,你可以有一个目录表和一个文件表。然后对于根目录中的每个目录,其父 id 为 0。然后,该目录下的每个目录都具有其父级的父 id。
然后你给文件目录 id 来指明它们的位置。
【讨论】:
我的建议与 Ólafur Waage 的建议类似,但我会使用单个表格,并使用指示列来表示记录的“类型”。
id - Primary Key
parent_id - FK to self (id)
type - enum('D', 'F')
name - varchar
content - BLOB (if you wanted to ever store the file contents).
这遵循分层树结构,对于 MySQL,您可以在此处找到更多信息:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
【讨论】:
最简单的方法(也许不是最好的方法)是确定您所追求的目录树的“根”文件夹,然后在每个文件上获取相对于该文件夹的路径并将其存储为另一列(例如“路径”)在数据库表中。您可以稍后查看这些值来构建相同的目录结构。
【讨论】:
最佳是上下文相关的。但从表面上看,我会说存储文件结构的最佳方式是在文件系统中。除非您需要将条目与其他记录链接在一起或以其他方式查询它们,否则关系数据库并不是任意分层数据的最佳选择。 您还可以使用混合解决方案,在数据库中保留索引、文件路径和一些元数据,但仍将其存储在文件系统中。
【讨论】: