FileFerret design
Woozle: Projects: FileFerret: design
Overview
This page is for FileFerret design details, as I create them.
Data Concepts
- A File corresponds to the traditional operating system concept of a file, extended somewhat by:
- the ability to locate files in non-local and offline media
- the need for different machines to be able to locate the same file from the same information
- A Filament (portmanteau for "elemental file") corresponds to a particular ordered set of data values which in turn may correspond to zero or more actual files (if more than one file corresponds to the same filament, then those files contain identical data, though they do not necessarily have the same filename, timestamps, security attributes, etc.). Any filament may also have the following attributes in FileFerret's database:
- a description
- one or more topics
- A Folder corresponds to the traditional operating system concept of a folder or directory, i.e. it is a named location which may contain zero or more files, and also has a number of OS-dependent attributes such as creation time, access permissions, etc. Any given folder may or may not be reachable by any particular machine; if a folder is reachable by a particular machine, however, it is assumed that all folders underneath it are also reachable by that machine (although a given folder's contents may be inaccessible due to security restrictions).
- A Summit (table: Folders x Locations) is a record of the highest-level folder which is accessible to any particular class of machine. It consists of:
- ID_Folder: ID of Folder which is at the summit
- ID_Location generalized location for accessing that folder, to be mapped for each machine-class
- Summits will be entirely human-maintained in early versions of FileFerret; later on it may be possible to have FileFerret detect known folders which have been moved to other filespecs
- Summits generally correspond to the root folders of storage media (including fixed disks) and folders shared over the network.
- There are currently two classes of machine, from a file-access point of view:
- "root level" machines can access the entire file structure (including local file structures) if they have the right user/password
- "Windows" machines can only access explicitly shared folders (via Samba or other network file-sharing protocols)
- A Location is mainly a place-holder for Summits and Location Mappings to refer to, though it includes descriptive fields for human convenience.
- A Mapping represents to a particular machine's view of a Location, i.e. how to access it. Mappings generally correspond to storage media reading devices (including fixed disks) and network shares. Each mapping consists of:
- ID_Location: which location is being mapped
- ID_Machine: which machine this location is being mapped for
- FileSpec: how to access the location on the specified machine; includes "protocol://user@servername:password" where applicable
- isPrimary: is Machine primarily responsible for maintaining the record of this Location (i.e. the mapped Folder and all files under it)?