DiFX GUI and the Database

The DiFX GUI is designed to interact smoothly with the database scheme developed at Bonn.  The database resides on a designated server in the DiFX network, where it tracks experiments, passes, jobs, and modules, including all vital data and file locations.  The GUI can read these items from the database, augment and update them as they change, and be set to automatically monitor them for changes from other sources.

You don't have to use the database if you don't want to!  While many installations employing DiFX and the GUI, particularly those where many correlation jobs are performed by many different users, may find the database useful, for some the setup and maintenance of the database may not be worth the bother.  The GUI can be set to ignore the database completely - it will operate perfectly fine (or as well as it ever does) without it.

Database Controls in the Settings Menu


The Database Host

Database Tables

Database Versions

The database maintains its own version numbering system as changes are made to its structure (not its content - that is supposed to change).  It is probable that one version of the database will not work particularly well, or at all, with a GUI that is designed to work with a different version.   GUI development will attempt to keep up with the most recent database version, however it will not lock you to the most recent version - it will try to remain backwardly compatible with older ones (time will tell how well this works).  In this way, an upgrade to the GUI will not require you to change your database (an action that might cause havoc with your data if the database changes are dramatic).  The reverse will, unfortunately, not be true - an upgrade of your database will require a current version of the GUI.  There is no way to see the future.

The GUI is currently compatible with database version 1.1.  At the moment, there is no version it is backwardly compatible with.  The database version comes from the "VersionHistory" table.  The GUI reports it in the "Version" field of the "Database Configuration" section in the Settings Menu (see illustration above).

Automatic Updates

In addition to the GUI, it is possible that other applications may make changes to the database (the DiFX source tree contains a number of Python scripts that have been developed to do so).  It is also possible to change the database directly from the command line on the database host.  To accommodate possible external changes, the GUI can be set to automatically consult the database periodically and refresh its displays and lists to reflect any changes. 

Because consulting the database and changing the GUI to reflect its content is a time consuming (and possibly intrusive) process, it is recommended that you only turn on automatic updates if you expect changes to the database from another source.  If you are the only party using the database, automatic updates serve no purpose.

With-Database vs. Without-Database Operational Differences

For the most part, the GUI will appear to work the same both with and without using the database.  However there are some inevitable differences, which are outlined here:
  1. Existing Experiments Accessibility On Startup
    If you run the GUI with a connection to the database it display information about other experiments that have previously been created and/or run on the same DiFX host.  Jobs in these experiments can be edited, deleted, and rerun exactly as if you had created them.  Without the database you have none of this.  A GUI session will know only about the experiments it created - each time it is run it will start with a clean slate.  Previous experiments will still linger in the form of directories and data files on the DiFX host (the proper term for this might be "litter"), but any further manipulation of them will have to be done by hand.
  2. Real-time Monitoring of Changes to Database and Queue Items (Automatic Updates)
    The GUI isn't the only game in town when it comes to queueing or running jobs, or making changes to the database.  However, it can be set up to monitor the database for changes, so that as long as other parties keep the database up to date these changes will be reflected on the GUI.  Without the database, the GUI will be blind to these changes.
  3. Status/Type Lists
    The GUI maintains a number of lists used to categorize items, including Experiment Status, Job Status, and Pass Type.  The items in these lists (i.e. all of the "types" in the "Pass Type" list) are maintained in the database when it is connected.  Users can add new types or statuses and these are added to the database (and will appear from then on).  If there is no database the GUI must maintain its own lists.  These can be added to as well, and they will be remembered between GUI sessions, but they will be completely independent lists.