- Tagsistant
Infobox Software
name = Tagsistant
developer = Tx0 Infobox filesystem
latest release version = 0.1
frequently_updated = yes
programming language = C
operating system = Linux and BSD kernels
language = English
genre =Semantic File System
license = GNU GPL
website = http://www.tagsistant.net/
name = Tagsistant
developer = Tx0
full_name =
introduction_date =
introduction_os =
partition_id =
directory_struct =
file_struct =
bad_blocks_struct =
max_file_size =
max_files_no =
max_filename_size =
max_volume_size =
dates_recorded =
date_range =
date_resolution =
forks_streams =
attributes =
file_system_permissions =
compression =
encryption =
OS = "Tagsistant" is aSemantic File System written in C, compatible withLinux andBSD kernels using FUSE.Tagging and retrieving files
Tagsistant is intended as a personal tool for information management. It provides a private space in which users can store information organizing them by meaning rather than with a fixed positional scheme, as in traditional
file systems .Tagsistant uses file system's well known concept of directory with new intuitive meaning: a directory is a tag. Creating a new directory means creating a new tag. Copying or moving a file inside a directory means tagging a file.
Browsing a Tagsistant file system means doing logical queries to retrieve files. 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 files 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.
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 return file "pict3021.jpg" only, because it was the only being tagged with both tags. Querying "/mountain/OR/summer_2007/" will result in "pict3021.jpg", "pict6452.jpg" and "pict8902.jpg", because every file tagged as "mountain" or "summer_2007" will be a valid result.
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.
torage backend
Tagsistant stores files and meta information in a directory called "repository". Inside that directory is placed the "archive" directory, which contains all contents tagged (mainly files). Files are stored in this directory only. As a consequence, file "pict3021.jpg" shown in previous example allocates space only once, even if virtually present in two tag directories.
Tagsistant is designed to be light and efficient enough to run even on small devices like PDA. First implementation was based on symbolic links. 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 consumption of inodes on real file system and high computational time required to fulfill each request.
Next implementation is based on
SQLite . While the "archive" directory is still present, the "tags" directory was replaced by "tags.sql" SQLite archive. New backend internally usesSQL queries to retrieve tagged files and to store results in a timestampedcache , improving performance and avoiding duplicated queries.
Wikimedia Foundation. 2010.