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

时间:2009-05-29 05:34:56

标签: database linux operating-system filesystems bsd

数据库文件系统是一个文件系统,它是一个数据库而不是一个层次结构。最初的想法不是太复杂,但我想我会问是否有人想过他们会怎么做这样的事情?一个简单的计划可能会错过的问题是什么?我对实现的第一个猜测是类似于Linux平台的文件系统(可能在现有的文件系统上),但我真的不知道如何启动它。这是一个过去的想法,我怀疑我是否会坚持到底,但我希望至少满足我的好奇心。

6 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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

在Windows上,您可以使用IFS

答案 2 :(得分:1)

我不太确定你的意思“数据库文件系统是一个数据库而不是层次结构的文件系统”。

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

答案 3 :(得分:0)

也许this是了解如何运作的良好起点。

这是basic overview架构的Firebird

Firebird是一个开源RDBMS,如果您有兴趣,也可以拥有真正深刻的洞察力。

答案 4 :(得分:0)

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

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

因此,应用转化的步骤如下:

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

2)数据库中具有轻元数据的BLOB中的数据。带有一些目录信息的文件。

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

4)在对象中暴露的BLOB的内部结构< - >具有广泛元数据的关系图。虽然可能存在可导出的表单,但应用程序自然可以与数据库一起使用,因为存储库丢失了文件的概念。

答案 5 :(得分:0)

如果您使用Python,那么请查看SpiderOak的Transactional Storage System

  

支持大多数典型文件的python可访问文件系统API   操作(目录,文件夹,文件创建,阅读,写作,   具有事务容错的搜索,重命名等。您可以   打开文件系统,执行任意数量的修改,然后   以原子方式提交或回滚所有更改。这让我们建立   SpiderOak使用简单的传统文件对象作为容器。用途   SQLite内部作为存储系统,因此保留了整个   单个磁盘文件中的文件系统。是多进程和   线程。