Ferret File System/v0.1/SQL/firev: Difference between revisions
(post-move tidying) |
m (Woozle moved page FileFerret/SQL/firevs to FileFerret/SQL/firev without leaving a redirect: singularizing) |
(No difference)
|
Revision as of 23:09, 27 February 2016
About
"Firev" is short for "file revision". A firev is a particular series of byte values that represents a particular revision, or version, of a fideal. Fideal records are generally only created when multiple copies of the same file are found, though they may also be created manually in order to track more information about a file.
A firev can be created either deliberately (as a result of user editing) or accidentally (imperfect transcription, drive corruption, viral infection).
- Future: not sure if we should be tracking FirstFound and LastFound here. Though they will probably be useful, they might be better determined by looking at the event records.
Fields
- isDelib: TRUE if this is known to be a deliberate user edit of the parent firev (must be FALSE if isAccid is TRUE)
- isAccid: TRUE if this is known to be an accidental corruption of the parent firev (must be FALSE if isDelib is TRUE)
- Descr should describe, if known, what distinguishes this firev from other firevs of the same fideal (or from the parent firev, if there is one).
- FileHash is a unique fingerprint (hash) of the file, using an algorithm unlikely to produce duplicate hashes for even the smallest variation. See hash() for details; apparently these can be as long as 128 hexadecimal digits = 64 bytes.
I think we're also going to want a field, possibly called FileMean, which changes very little (or not at all) when there are small changes to the data. This should make it easier to connect firevs to a fideal.
Rules
- isDelib and isAccid can both be FALSE if the cause of the firev is not known (i.e. we know there's a knew firev, but not whether it was deliberate or accidental), but they cannot both be TRUE.
History
- 2012-12-25 Adapted/created from fideals
- 2016-02-27
- Added FirstFound, LastFound timestamps.
- Scrapped Fideal, Parent.
- Renamed "firevs" -> "firev".
SQL
<mysql>CREATE TABLE `firev` (
`ID` INT NOT NULL AUTO_INCREMENT, `isDelib` BOOL DEFAULT FALSE COMMENT "TRUE = this is known to be a deliberate user edit of the parent", `isAccid` BOOL DEFAULT FALSE COMMENT "TRUE = this is known to be an accidental corruption of the parent", `Descr` VARCHAR(255) COMMENT "description of differences", `FileSize` INT COMMENT "correct file size in bytes", `FileHash` VARBINARY(64) COMMENT "unique hash", `FirstFound` DATETIME NOT NULL COMMENT "time/date when file was first found during a scan", `LastFound` DATETIME NOT NULL COMMENT "time/date when file was most recently found during a scan", PRIMARY KEY(`ID`)
) ENGINE = MYISAM;</mysql>
scrapped
These might get used later, but I suspect they don't belong here: <mysql>
`ID_Fideal` INT DEFAULT NULL COMMENT "ID of ideal file", `ID_Parent` INT DEFAULT NULL COMMENT "ID of parent firev, if any",
</mysql>