您将如何构建数据库文件系统(DBFS)?
数据库文件系统是一种数据库而不是层次结构的文件系统。 最初的想法并不是太复杂,但我想我会问是否有人考虑过他们如何做这样的事情? 简单的计划可能会忽略哪些问题? 我对实现的第一个猜测是类似于 Linux 平台的文件系统(可能在现有文件系统之上),但我真的不太了解如何启动它。 这是一个短暂的想法,我怀疑我是否会坚持下去,但我希望至少能满足我的好奇心。
A database file system is a file system that is a database instead of a hierarchy. Not too complex an idea initially but I thought I'd ask if anyone has thought about how they might do something like this? What are the issues that a simple plan is likely to miss? My first guess at an implementation would be something like a filesystem to for a Linux platform (probably atop an existing file system) but I really don't know much about how that would be started. Its a passing thought that I doubt I'd ever follow through on but I'm hoping to at least satisfy my curiosity.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
DBFS 非常好KDE 的 PoC 实现。 它不是直接将其实现为文件系统,而是基于传统文件系统上的索引,并构建新的用户界面以使用户可以访问结果。
DBFS is a really nice PoC implementation for KDE. Instead of implementing it as a file system directly, it is based on indexing on a traditional file system, and building a new user interface to make the results accessible to users.
最简单的方法是使用 fuse 和数据库后端来构建它。
更困难的事情是将其作为内核模块(VFS)。
在 Windows 上,您可以使用 IFS。
The easiest way would be to build it using fuse, with a database back-end.
A more difficult thing to do is to have it as a kernel module (VFS).
On Windows, you could use IFS.
我不太确定“数据库文件系统是一个数据库而不是层次结构的文件系统”是什么意思。
也许,正如 Osama ALASSIRY 所提到的,使用 “用户空间中的文件系统”(FUSE) 是一个好主意。 FUSE wiki 列出了许多有关数据库支持的文件系统以及文件系统的现有项目您可以在其中通过类似 SQL 的查询进行搜索。
I'm not really sure what you mean with "A database file system is a file system that is a database instead of a hierarchy".
Probably, using "Filesystem in Userspace" (FUSE), as mentioned by Osama ALASSIRY, is a good idea. The FUSE wiki lists a lot of existing projects about databased-backed filesystems as well as filesystems in which you can search by SQL-like queries.
你问这个问题已经有一段时间了。 我很惊讶没有人提出显而易见的建议。 看看大型机和小型机,尤其是 iSeries-OS(现在称为 IBM-i,以前称为 iOS 或 OS/400)。
如何把关系数据库做为海量数据存储是比较容易的。 Oracle 和 MySQL 都有这些。 问题是它对于最终用户应用程序来说必须是普遍存在的。
因此,应用程序转换的步骤是:
1)普通分层文件系统中的所有内容
2)BLOB 中的数据以及数据库中的轻量元数据。 包含一些目录信息的文件。
3) BLOB 中的大数据,数据库中具有大量元数据和复杂结构。 具有与其相关的大量元数据的文件,这对于理解结构至关重要。
4) 对象中暴露的BLOB的内部结构<--> 具有广泛元数据的关系图。 虽然可能存在可导出的形式,但应用程序自然地与数据库一起工作,文件作为存储库的概念丢失了。
Its been a while since you asked this. I'm surprised no one suggested the obvious. Look at mainframes and minis, especially iSeries-OS (now called IBM-i used to be called iOS or OS/400).
How to do an relational database as a mass data store is relatively easy. Oracle and MySQL both have these. The catch is it must be essentially ubiquitous for end user applications.
So the steps for an app conversion are:
1) Everything in a normal hierarchical filesystem
2) Data in BLOBs with light metadata in the database. File with some catalogue information.
3) Large data in BLOBs with extensive metadata and complex structures in the database. File with substantial metadata associated with it that can be essentially to understanding the structure.
4) Internal structures of the BLOB exposed in an object <--> Relational map with extensive meta-data. While there may be an exportable form, the application naturally works with the database, the notion of the file as the repository is lost.