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:
- 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.
- 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.
- 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.