什么是数据库文件系统?

8

我对数据库文件系统的了解很少。

能否有人在这里向我解释一下什么是数据库文件系统,以及它的应用是什么? 它与传统文件系统有何不同?

我该如何构建它?


6
@ Tom,你不觉得在提出这个问题之前我肯定已经做了一些谷歌搜索吗?我在那里没有找到太多有趣和详细的信息,所以我想为什么不问那些可能已经知道或使用过它的大牛们呢? - Ravindra S
5
啊哈!看起来汤姆删除了他的评论。 - Ravindra S
4个回答

9
典型的文件系统(*nix,ms-dos等)按层次结构组织文件。例如,
c:\ 表示层次结构的顶部 c:\ foo是层次结构的下一级 c:\ foo \ bar是\ foo的子节点 等等..
每个文件只存在于此层次结构中的一个位置。
相比之下,数据库文件系统通过元数据属性组织文件。例如,主题、类型、作者等。文件不是存在于层次结构中特定的位置,而是根据其属性存在于多个“位置”。
你所问的最后一个问题无法回答。

7
我不得不给你点个踩,抱歉。Unix并没有按层次结构组织文件,而是以基于图形的结构组织数据,其中层次结构是最常用的(因为易于处理)。文件系统中的每个文件名实际上是对inode结构的引用。您可以添加到同一inode的多个引用(所谓的硬链接)并将文件同时放置在多个位置。只要您保持在同一文件系统的范围内,这就可以正常工作。此外,您还可以使用软链接来作为透明路径引用。总之... - Stefano Borini
2
你在用户空间看到的是一个层次结构,因为一个节点被选为根节点,但这只是众多选择中的一个强制性选择。在根节点之后,如果你想的话,基本上没有结构限制,唯一的限制是路径的最大长度(通常为1024个字符,如我所知)。实际上,最常用的布局是简单的层次结构这一事实是无关紧要的。 - Stefano Borini
1
当然,实际信息在物理磁盘上的存储方式是完全不同的故事。 - Stefano Borini
1
@StefanoBorini Unix是否通过防止创建目录的硬链接来强制使其成为非循环和有向的? - mtraceur

6

对于最后一个问题(如何构建这样的东西),可以参考这个链接:https://thepythoncorner.com/posts/2017-02-28-writing-a-fuse-filesystem-in-python/。该链接展示了如何在Python中实现一个可以挂载的文件系统。 - nadapez

2

这是一个文件系统,其中文件具有大量的元数据。例如,iTunes库可能被视为数据库文件系统;不仅可以在磁盘上找到文件并知道它们的位置,还可以使用标签(流派)和其他元数据,如作者(艺术家)。


1

这是一种文件系统,它将文件存储为数据库中的blob,而不是目录层次结构。想象一下一个没有URL中“类似目录”的层次结构的网站 - 只有大量的标签和类别以及一个大的“搜索”字段 - 就像这样,在您的硬盘上。

优点和缺点?问问自己,我见过多少数据库文件系统?你需要问更多吗?


你听说过微软的WinFS和苹果的Spotlight吗?它们是DBFS的最佳例证。 - Ravindra S
1
OSX的Spotlight是一个应用程序,它使用Apple的HFS+文件系统中的元数据扩展。HFS+不是数据库文件系统。WinFS从未发布过,所以除非你在微软工作,否则不太可能会看到它。唯一广泛部署的DBFS是随AS/400一起发布的。显然,它非常优秀。 - alex tingle
1
是的,WinFS的beta版本在几年前发布了。它可以在Torrent网站上找到,但是没有种子。我不知道为什么微软取消了它。我很想使用这样的系统,我只是喜欢DBFS的概念。 - Ravindra S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接