rdbms file system

Michael S. Mikowski z_mikowski at yahoo.com
Tue Mar 25 03:51:45 GMT 2003


On Monday 24 March 2003 10:26 pm, Michael S. Mikowski wrote:
> Is anyone investigating an extensible rdbms file system for kde or linux in
> general? Here's what I mean:
>
> * rdbms       = relational database management system .
> * file system = data is broken into 'bulk' and metadata components
> * extensible  = metadata can be defined per application through means of a
>                 template.

Here is a more concrete example of the rdbms file system concept -- refered to 
here as MetaFS.  Again, please let me know if there is interest, or if this 
is redundant with existing frameworks.  Again, I have a "reference" 
implementation of this type of framework which can be reviewed today.

==== <example> =====
There is a fundamental problem in sharing data between apps.  Consider the 
email / datebook / address suite as an example: 
 
Today, when an app outside of the suite wants a contact, the user is often 
forced to open up the the address book to get it. In the case of KDE, 
kaddressbook might be opened for you. Or, in some cases (e.g. kpilot), the 
data file is parsed in the background (one would suspect there is a 
kaddressbook api which has been accessed in this case). 
 
But these all seem like hacks.  In all cases, the full addressbook must be 
parsed before any action can be taken on it. Because it is so commonly 
required, wouldn't it be better if that data were available through some kind 
of daemon? The MetaFS could provide this data at all times to all apps, 
searchable and randomly accessable. Ok, you say, we have LDAP, so that solves 
part of the problem. 

But what about other file types?  Lets say, for example, emails.  Isn't it 
silly to have an email client which presents all these messages in a 'file 
tree' format, yet one can't interact with them like normal files? In an 
abstract way, emails look like 'normal' files: metadata + bulk data (The 
metadata is the header fields like "to, from, cc," and perhaps the body text; 
the bulk data would include attachments). 
 
When you are done reading an email, why shouldn't you be able to put it in 
your file system? If you have extensible metadata, you can. And any other app 
could search and randomly access individual emails as required at any time. 
Imagine opening attachments in koffice directly from your email tree. Or 
interogating a file in your home directory to see who you received it from, 
on what date. 
 
Other examples might include a scanning application that stores scan setting 
data with the file. Or a digital photography app which includes the 
photographers name and picture date. 
 
Of course, one wouldn't want to get too crazy with the metadata.  As proposed, 
there would be an extensible listing of permissible metadata across the apps, 
and the MetaFS would ensure its clients provide only valid metadata 
parameters and values. Think of all the dot file kludges we use currently to 
support such metadata today -- these data are inconsistent (across apps) and 
very difficult to search.  This approach would ensure metadata fields mean 
the same thing across all apps!
 
The MetaFS concept should be much more efficient than current solutions. By 
spliting metadata apart from the bulk data, portions of the metadata can be 
held memory resident while all bulk data is remains on disk. Also, since we 
are sharing the MetaFS across multiple application, there only need be one 
image of this data memory resident at any given time, instead of multiple 
images held by multiple apps. Since the database is always running, there is 
no startup or parsing overhead. And, of course, one can use SQL-like calls to 
randomly answer all sorts of questsions, "natively" on the data from any 
application which uses the MetaFS. 

==== </example> ====

The MetaFS concept is a continuation of the Unix philosophy where 'everything 
is a file.' It just requires a more flexible file system to accommodate. 
 
Here is a mission statement: 
==========================================================================
We have a group of applications where we would like to share data. We would 
like to randomly access file data and metadata in a fast and consistent 
manner. We must be able to search by and use metadata using sql or sql-like 
calls. The metadata is not typically supported by the file system. Access to 
the data should always available through an open API provided by a daemon. 
The metadata fields must be restricted to a known (but extensible) list which 
defines the meanings of fields across appilcations. The daemon would validate 
metadata prior to storing data. Versioning of data would be supported.
==========================================================================




More information about the kfm-devel mailing list