Re: SetFS

Tuomo Valkonen <[email protected]>
Newsgroups gmane.comp.window-managers.ion.general
Message-ID <[email protected]>
On 2007-02-27, Sam Mason <[email protected]> wrote:
> I'm wondering if the name should be specific attribute seperate from the
> tags.  This would shrink the set of tag down a lot and I think that may
> be all that's needed.

You shouldn't need this conceptual split for the optimisation: just
consider every tag with global frequency of just one, a "filename"
in the pruning code, and ignore them initially, only adding them
to the result, for the objects that the other tags didn't cover.
This, of course, depends on knowing the frequency one tags, and
in a basic implementation loading that information from the disk, 
which adds some overhead. You could, however, have a special ID 
range reserved for the frequency one tags. It would complicate
things a bit, though, as you have to change the tag IDs, as the
frequencies change (but only for one object, so it's not expensive).

> I'd also be tempted to split the tags into two groups "identifier"
> tags and "informational" tags.  The unique name check would be done on
> (identifier tags,name) and the informational tags would exist to make
> searching easier.

Identifier tags would essentially be another filter :). You would
also want to mark them in a special manner in the name, so they
can be ignored for single file operations, for storing the
location of a file, and so on.

One related thing that I've thought about (a little but not enough)
is typed tags or meta-tags. So e.g. the tag 'ion' could have the 
meta-tag 'project'. The path component #project would then filter
out everything that doesn't have a 'project' meta-tagged tag. 
Furthermore creating an object with tags ion.project/foo/bar, would 
fail if 'ion' isn't meta-tagged 'project', and if the ion tag doesn't
exist, meta-tag it a project. 

Alternatively, the meta-tags could only apply to tags within objects,
and could be used to further filter the results, so that only things 
with the 'project' meta-tag applied to the 'ion' tag would show up. 
However, the meta-tag would still not contribute to the name, and you
could not have both 'ion.bar/foo' and 'ion.baz/foo', as both would 
still have the name 'ion/foo'.

Or something like that. Like I said, it's a fancy idea that I 
haven't thought enough about, and I'm not sure I want that 
complexity... It's starting to sound like metacrap :).

> I'm still not sold on the pruning idea.  It could be because I've not
> done anything like it before and therefore I'm just worried about it
> because I don't know much about it.  I've rationalised this as thinking
> there will be problems with scaling, but to be honest I don't know.

It is an expensive operation, but as I've mentioned, various 
not-so-expensive approximations can be devised, that might still
provide more useful results than a simple listing of all tags seen.
It's something to be researched and tried out. The particular 
pruning method seems unlikely to be something integral to the 
design of the FS, although some optimisations might be stored
(in just another file within the FS, if it even were a full FS).

> I don't like plugin for things like this, they force you to expose
> too many implementation details, make things brittle and resistent to
> change.

Not necessarily. Just consider the plugins storing another table
within a DB for their index.

-- 
Tuomo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.