Jump to content

Tagsistant

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Tx076 (talk | contribs) at 15:20, 28 August 2007. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Tagsistant
Developer(s)Tx0 <tx0@strumentiresistenti.net>
Operating systemLinux and BSD kernels
TypeSemantic File System
LicenseGPL
Websitehttp://www.tagsistant.net/

Tagsistant is a Semantic File System written in C, compatible with Linux and BSD kernels using FUSE.

Tagging and retrieving files

Tagsistant uses file system's well known concept of directory with new intuitive meaning: a directory is a tag. Creating a new directory means create a new tag. Copying or moving a file inside a directory means tagging a file.

Tagsistant uses a simple query language formed only by tag names and logical operators OR and AND. Joining two tags with AND will restrict results to file tagged with both tags. Joining two tags with OR will start a new query subset, merging results from previous subset with result from next subset.

Browsing a tagsistant file system means doing logical queries to retrive files. As an example suppose that user created directory mountain and copied files pict3021.jpg and pict6452.jpg in it, and after created directory summer_2007 and copied files pict3021.jpg and pict8902.jpg in it. Querying /mountain/AND/summer_2007/ will result in file pict3021.jpg only. Querying /mountain/OR/summer_2007/ will result in pict3021.jpg, pict6452.jpg and pict8902.jpg.

While browsing a tagsistant file system, user can be in one of two states:

  • Path ends with a tag: listing contents will result in files matching query path added with logical operators OR and AND featuring as two directories.
  • Path is null or ends with a logical operator: listing contents will result in all created tags featuring as directories the used can enter in.

Storage backend

Tagsistan stores files and metainformations in a directory called repository. Inside that directory is placed the archive directory, which contains all contents tagged (mainly files).

Tagsistant is designed to be light an efficient enough to run even on small devices like PDA. First implementation was based on symbolic links but was affected slow performance. Tags were created as real directory inside repository tags directory and files were tagged establishing a symbolic link inside each tag directory. Major flaws of this design were high consuption of inodes on real file system and high computational time required to fulfill each request.

Actual implementation is based on SQLite. While the archive directory is still present, the tags directory disappeared in favor of tags.sql SQLite archive. New backend internally uses SQL queries to retrieve tagged files and store results in a timestamped cache, improving performance and avoiding duplicated queries.