我希望这是正确的网站,我在 4 个姊妹网站之间迷失了方向 :)
让我这样问这个问题。我以前见过的所有文件系统都是分层的,这意味着一个根目录,带有一些分支目录,依此类推,直到我们有文件驻留在这些目录中。除了 AS/400 文件结构,它有一个库的概念,它可以以某种方式充当目录,但只有一个级别。
为什么不采用无目录的文件系统,将文件放在一个位置,但文件标识符将由标签/文件关系数据库引用。
这样就不需要符号链接了,一个文件可能与多个主题有多个关系,而不仅仅是包含一个父目录。
我希望这个想法是清楚的。
答案1
我花了几年时间从事我的业余项目,田纳西州立大学正是这样做的。您可以使用命令行工具标记文件,然后可以安装虚拟文件系统,该文件系统显示标记的文件以及每个标记的目录。您还可以运行查询(例如“炸鱼和薯条而不是(豌豆或肉汁)”)。
该工具不会改变文件的原始位置,因此,如果您愿意,可以将文件合并到一个地方,然后仅通过虚拟文件系统访问它们。
我知道您可能正在寻找在更基础的层面上实现这一点的东西,例如具有该功能的操作系统,但我认为 TMSU 提供了一个很好的解决方案,而不需要尝试引入一个与 Linux、BSD 等可用的大量开源软件不兼容的全新操作系统。
或者,即使不使用 TMSU 或其他类似工具,使用硬链接也可以将文件放在多个目录中,因此您可以仅使用文件系统来获得简单的文件标记解决方案。这提供了标记的一些优势,但您将无法轻松找出哪些文件有多个标记,并且显然无法进行复杂的查询。
答案2
Windows Vista 最初被吹捧为操作系统,它基于关系数据模型,内部使用关系数据库。
纯粹的文件标记功能肯定太小而无法有效使用,但数据的丰富元属性却允许在文件之间使用和自动生成更有意义的关系。
为了有效地自动生成关系,操作系统必须清楚了解文件内容、元数据和/或语义。因此,数据库文件系统的优势在于,它要求数据符合标准架构,从而摆脱了程序自己的(通常是专有的)文件格式。(尽管 WinFS 特别支持存储半结构化文件或无结构文件。)
总的来说,你所描述的这种系统的想法似乎很棒,但实现起来可能并不像听起来那么容易。作为关系文件系统(或数据库文件系统)的内部结构,它们很可能也具有某种层次结构,如树,所有这些关系数据库管理系统的有。
作为免责声明,WinFS 尚未公开发布。对于 Linux,您可以尝试关系文件系统,一个在分层文件系统上运行但通过关系文件系统接口显示日期的程序。