Version 1 of metadata virtual filesystem

Updated 2004-10-29 02:19:24 by CMCc

A possible tclvfs - CMcC 20041029

Storage of metadata (data about data) is an important and undersupported facility of file systems.

tcl supports the [file attributes] command to store some system-defined metadata, and tclvfs permits this to be redefined and extended.

What this allows is vfs which intercepts the [file attributes] command and loads/stores attribute (name,value) pairs in some parallel store.

The question is what form of parallel store would be best?

  • parallel hierarchy - metadata is stored in a file hierarchy which parallels the structure of the original, so there's a mapping from ${path} -> ${path}.metadata which contains an array dump of name->value pairs. CONS: expensive/slow, PROS: persistence for free.
  • hidden directory - metadata stored in special files hidden in a per-directory .metadata directory. CONS: expensive/slow, invasive (less so than invasive-interpolation, below), PROS: faster than parallel-hierarchy, metadata is joined with with data (less so than invasive-interpolation)
  • persistent array - metadata is stored in an array $metadata($path) as an [array get] form per file, to be loaded/stored once, then accessed from memory. Could use tie for persistence. CONS: doesn't scale well, persistence needs work, PROS: fast.
  • metakit - metadata stored in a metakit file, loaded/stored as required. CONS: not pure tcl, slower than persistent-array, PROS: scales, faster than parallel-FS.
  • invasive interpolation - metadata stored at the head of each file in (say) RFC822-style name:value lines. CONS: invasive, wrecks files for general (non-tcl) use.
  • (add more here)

[Category VFS]