您将如何构建数据库文件系统 (DBFS)?

Posted

技术标签:

【中文标题】您将如何构建数据库文件系统 (DBFS)?【英文标题】:How would you build a database filesystem (DBFS)? 【发布时间】:2010-10-29 19:11:56 【问题描述】:

数据库文件系统是一种文件系统,它是数据库而不是层次结构。最初的想法并不太复杂,但我想我会问是否有人考虑过他们如何做这样的事情?一个简单的计划可能会遗漏哪些问题?我对实现的第一个猜测可能类似于 Linux 平台的文件系统(可能位于现有文件系统之上),但我真的不太了解如何启动它。这是一个短暂的想法,我怀疑我是否会坚持下去,但我希望至少能满足我的好奇心。

【问题讨论】:

我有一些想法,但更愿意离线讨论。你还有兴趣吗? 虽然我仍然认为这个想法很重要,但我已经转移到一个大型项目,我已经对用户隐藏了文件系统,因此文件元数据的问题不是对他们可见。不是一个了不起的解决方案(不能很好地使用工具),但比用户不友好的操作系统更好。我真的没有时间投资这样的项目,所以我不会有任何真正的帮助。也就是说,我很高兴看到你想出什么,所以请在这里告诉我们! 我很惊讶这个不是百分之一没有歧义的问题还没有结束。 请注意 - Oracle 拥有几项涵盖该想法的专利。这些专利已于 2000 年左右颁发。因此,如果您打算实施这样的事情,请小心并与律师核实,您将来如何避免来自 Oracle 的专利诉讼。 【参考方案1】:

DBFS 是一个非常好的 KDE PoC 实现。它不是直接将其实现为文件系统,而是基于传统文件系统上的索引,并构建新的用户界面以使用户可以访问结果。

【讨论】:

没见过。很有趣! 是的。我将它用作我在 Windows 中构建的 DBFS 的参考。【参考方案2】:

最简单的方法是使用fuse 构建它,并带有数据库后端。

更难的事情是将其作为内核模块 (VFS)。

在 Windows 上,您可以使用 IFS。

【讨论】:

【参考方案3】:

我不太确定您所说的“数据库文件系统是一个文件系统,它是一个数据库而不是一个层次结构”。

可能,正如 Osama ALASSIRY 所提到的,使用 "Filesystem in Userspace" (FUSE) 是一个好主意。 FUSE wiki lists a lot of existing projects 关于数据库支持的文件系统以及您可以在其中通过类似 SQL 的查询进行搜索的文件系统。

【讨论】:

【参考方案4】:

也许this 是了解它如何工作的一个很好的起点。

它是basic overview 架构的basic overview。

Firebird 是一种开源 RDBMS,因此如果您有兴趣,也可以深入了解一下。

【讨论】:

【参考方案5】:

你问这个已经有一段时间了。我很惊讶没有人提出显而易见的建议。看看大型机和小型机,尤其是 iSeries-OS(现在称为 IBM-i,以前称为 ios 或 OS/400)。

如何将关系数据库作为海量数据存储相对容易。 Oracle 和 mysql 都有这些。问题是它必须对最终用户应用程序基本上无处不在。

所以应用转换的步骤是:

1) 普通分层文件系统中的所有内容

2) BLOB 中的数据,数据库中有少量元数据。包含一些目录信息的文件。

3) BLOB 中的大数据,在数据库中具有广泛的元数据和复杂的结构。具有与其关联的大量元数据的文件,基本上可以理解结构。

4) 对象中暴露的 BLOB 的内部结构 具有大量元数据的关系图。虽然可能存在可导出的表单,但应用程序自然而然地与数据库一起工作,文件作为存储库的概念丢失了。

【讨论】:

以上是关于您将如何构建数据库文件系统 (DBFS)?的主要内容,如果未能解决你的问题,请参考以下文章

尝试访问 Azure Databricks 中的 Azure DBFS 文件系统时出现挂载错误

在Databricks(DBFS)中递归列出目录和子目录的文件

如何在 DBFS 中本地保存和下载 csv?

从数据块 DBFS 中删除记录

如何使用pyspark递归获取存储在dbfs文件夹中的Excel文件?

如何使用 dbfs 之外的 Python 文件创建 Databricks 作业?