Description: Design files may reside in different databases. The most common database is the filesystem. VOV offers a generic database interface in the sense that it traces dependencies between named entities residing in persistent databases.
Keywords: databases, FILE, databases, FILEX, databases, GLOB, databases, JOBSTATUS, databases, LINK, databases, PHANTOM, databases, VOVSETS, databases, ZIP, databases

# Databases

Design files may reside in different databases. The most common database is the filesystem. VOV offers a generic database interface in the sense that it traces dependencies between named entities residing in persistent databases.

VOV requires a method to obtain the timestamp of each named entity in the database. For example, the most common database is called "FILE", its entities are files, and the method to obtain the timestamp of a file is the OS call `stat()`.

VOV supports multiple databases. Some are supported internally. Others must be supported externally by special clients called database proxies, which provide the server with the needed timestamp for the entities in a database.

Check the Databases page to see the list of databases supported by the current project.

## Internally Supported Databases

The following databases are currently supported internally:

FILE
  The entities are files. The names are logical canonical path names. The timestamp is the modification time of the file. If a file does not exist, the timestamp is 0.
FILEX
  The entities are files, but in this case only the existence of the file, is important; the timestamp is not important. The names are logical canonical path names. If the file exists, the timestamp is fixed in the distant past. If a file does not exist, the timestamp is 0.
  To specify a file where you just care about the existence of the file, regardless of its timestamp, the syntax is different whether the file is an input or an output:

  | FDL | Instrumentation
  --- | --- | ---
  Input | I -db FILEX myfile D FILE | VovInput -db FILEX myfile
  Output | O -db FILEX -ignore_timestamp myfile D FILE | VovOutput -db FILEX -ignore_timestamp myfile

  The change of database is persistent. Next Inputs & Outputs will use the FILEX database, unless you add a -db FILEX or a D FILE line in your flow.
GLOB
  The entities in this database are "glob expressions." The syntax is the one used by the glob procedure in Tcl and by "globbing" in C-shell, that is "*" stands for any sequence of zero or more characters and "?" stands for any single character. If the expression can be expanded into a set of files, the timestamp of the entity is the timestamp of the most recent file. If the set of files corresponding to the expression is empty, the entity is considered non-existing and its timestamp is 0.
  This database is useful to represent the situation where a job depends on a directory and on all the files in the directory.
JOBSTATUS
  This database represents the status of a job. The name of the place has the form TYPE/JOBID where TYPE is one of DONE, FAIL, or SUCCESS and JOBID is the id of a job. The timestamp of the place is a fixed timestamp in the past and never changes. What changes is the status of the place depending on the status of the job it is attached to. For more information on this database, please refer to The JOBSTATUS Database.
LINK
  This database behaves like the FILE database, except that the entities are symbolic links. An easy way to add links to the flow is to use the option -links in the calls to VovInput and VovOutput (either encapsulation or instrumentation)

      ...
      VovInput -db LINK nameOfLink
      VovInput -links someInputFile
      VovOutput -links someOutputFile
      ...

PHANTOM
  This database behaves like the FILE database, except that the timestamp of a missing file is, by convention, a time in the distant past (by Computer Science standards), i.e. sometime in the year 1970. This database is useful to represent situations where a job is sensitive to the fact that a file may exist or not, for example when a tool uses a search path to locate files.
VOVSETS
  The entities in this database are sets of nodes. The timestamp of the entity is the timestamp of the set creation. Each set in the trace has a name and a timestamp.
ZIP
  The entities in this database are members in an ZIP archive. The name of the entity has the form `ARCHIVENAME(MEMBERNAME)`.
  The timestamp of the entity is the timestamp of the member inside the archive. In encapsulation scripts, be careful to escape the parentheses appropriately as in the following example:

      ...
      VovOutput -db ZIP -ignore_timestamp $archiveName\($memberName\)
      ...