9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Bakul Shah <bakul@bitblocks.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] Multi-dimensional filesystem
Date: Wed, 15 Aug 2012 13:09:49 -0700	[thread overview]
Message-ID: <20120815200949.4628BB85B@mail.bitblocks.com> (raw)
In-Reply-To: Your message of "Wed, 15 Aug 2012 19:33:27 +0200." <20120815173327.GA424@polynum.com>

On Wed, 15 Aug 2012 19:33:27 +0200 tlaronde@polynum.com  wrote:
>
> The main differences from what I have in mind are:
>
> 1) There is no general relational database concept: the relationships of
> the "records" (files, that can have both a text content [the definition
> in my example] and be a directory node) is exclusively isomorphic to
> coordinates: (i, j, k, ...).

Sounds like you want to represent a node with a directory,
that has a "content" file that stores content associated with
this node and a bunch of links to other nodes.  You are most
interested in parent/child relationships so for instance you
can store links to all parents in a "parent" file and links to
all children in "children" file. Not suggesting this is how
you implement it; I am just trying to understand.  A concrete
example from you would help.

> 2) There is no constraint in the size of the "fields": the dimension can
> grow with time (no given dimensions coordinates being, by convention,
> equal to 0 to reach the actual dimension) ; there is no limit (except
> implementation one) for the size of an enumeration.
>
> 3) The hierarchy is the user interface, to view and to add the data: a
> new file (record) is added by placing it in the hierarchy; while in a
> relational database, the indexing is deduced from the actual records;
> here, so to say, the data is entered through the indexing.
>
> 4) And the problem was also thought through 9P: is there something in 9P
> that would prevent, at least theoritically, such a view of data to be
> presented? With the convention of ".+" and ".-", my answer is no: 9P has
> no hardcoded knowledge of ".." if I'm not mistaken.

Note that in Unix ".." came for free since each dir stored the
inode number (a "link" to an anonymous inode) along with a
name.  The scheme could represent any graph but the kernel
restricted it to a tree by disallowing links to directories.
Expanding this back to multiple parents in effect makes a
poset (partially ordered set) but the unix trick or storing
(parent-inode, "..") fails. Treating ".." as an /operator/
that cancels the previous component in a path also fails.

You can perhaps extend a symlink object to store multiple
links as I described above. The other difficulty is that
something like 9p will only yield zero or one object as you
traverse a path. How do you handle multiple parents?

A more general idea is to consider a path component a "graph
expression" component that is interpreted by the current node
and may yield *any number of* new nodes.

In other words

	x = open("a/b/c", mode)

can yield a vector of file descriptors!  Leaving component
interpretation to the current node makes this a very dynamic
and powerful system (for example, one can think of a node that
maps to a list of network nodes -- so something like

    echo "date" > /net/my-nodes/foo
    chmod +x /net/my-nodes/foo
    /net/my-nodes/foo

can run date on all my nodes!  This would be a very compact
expression of how to distribute data or work.

Your original query is vague enough (& confusing, at least to
me) that one can take it in a number of directions :-)



  reply	other threads:[~2012-08-15 20:09 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-03 17:18 tlaronde
2012-08-03 18:58 ` Skip Tavakkolian
2012-08-03 19:25   ` tlaronde
2012-08-03 21:08 ` Burton Samograd
2012-08-03 21:12   ` Kurt H Maier
2012-08-03 21:17     ` Burton Samograd
2012-08-04  6:13   ` tlaronde
2012-08-04 10:56     ` Aram Hăvărneanu
2012-08-04 15:00       ` tlaronde
2012-08-04 12:16 ` Nicolas Bercher
2012-08-04 15:20   ` tlaronde
2012-08-05 15:29     ` Charles Forsyth
2012-08-05 17:36       ` tlaronde
2012-08-15 16:04         ` Eugene Gorodinsky
2012-08-15 17:33           ` tlaronde
2012-08-15 20:09             ` Bakul Shah [this message]
2012-08-15 20:17               ` erik quanstrom
2012-08-15 21:00                 ` Bakul Shah
2012-08-16  1:38                   ` erik quanstrom
2012-08-16  4:06                     ` Bakul Shah
2012-08-16 13:45                       ` erik quanstrom
2012-08-15 21:27               ` tlaronde
2012-08-16  3:47                 ` Bakul Shah
2012-08-16  5:34                   ` tlaronde
2012-08-16 13:40                     ` erik quanstrom
2012-08-16 15:41                       ` tlaronde
2012-08-16 16:06                         ` erik quanstrom
2012-08-16 16:28                           ` tlaronde
2012-08-16 15:59                       ` Bakul Shah
2012-08-16 16:31                         ` tlaronde
2012-08-16 16:48                         ` Burton Samograd
2012-08-16 17:02                 ` Eugene Gorodinsky
2012-08-16 19:48                   ` tlaronde
2012-08-16 20:11                     ` erik quanstrom
2012-08-17  6:48                       ` tlaronde
2012-08-17  7:48                         ` Lucio De Re
2012-08-20 15:17                           ` tlaronde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120815200949.4628BB85B@mail.bitblocks.com \
    --to=bakul@bitblocks.com \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).