The basic operating model provided by DBNet is an event/action model. DBNet performs an action for every event generated within it's dataflow environment. DBNet's versatility and power are defined by the flexibility of it's event/action definitions. An event can be as simple as the availability of a file, with it's corresponding action being the transfer of the file from it's remote system to the local system. One DBNet action can generate a new event, and therefore a new action. Event/action chains can be built to support complex data transfers and processing.
DBNet is accessed by external programs by the use of "bindings". Bindings are programs that inject specific types of data into the DBNet dataflow stream. External processes use DBNet by calling an external binding to generate a DBNet event for the specific data being injected. DBNet currently has support for the following bindings:
The BUFR binding is used to gather and transmit BUFR data. The ALERT binding is used to signal when a file is available on a computer. The WMO binding is used to ingest WMO data into DBNet. The satellite binding is used to distribute remapped satellite images from various NESDIS computer systems.
The best way to describe DBNet is by example. Consider the following scenario:
The AVN model runs on Cray3. The OSO anonymous FTP server needs the output from the AVN model run. How is the FTP server going to get the data? How is the FTP server going to know when the data is available?
As the model runs, it will call DBNet, via the ALERT binding, as each component created during the AVN run becomes available. DBNet will then send an ALERT message to the FTP server. The FTP server now knows what data is available, and can pull the data from the Cray. This model transfer can be configured to occur every time the AVN model runs.
Now, add the DAS1 server to the list of systems requiring the AVN model data. To notify DAS1 that the data is available, only requires Cray3 to also send the ALERT message to it. So the basic idea is:
The basic idea demonstrated above is that once DBNet is configured for a particular kind of data, the transmission details become transparent. DBNet will deal with network outages, computer outages and delays in data availability. DBNet configuration details were left out of our example. DBNet uses two configuration files, the parsing table and the ystem configuration file. The parsing table is used to specify the dataflow configuration. The system configuration file is used for specifying DBNet system tuning parameters. Since every DBNet installation has a unique function, every DBNet has a unique version of the parsing table and system configuration file.
Each computer in the example above has it's own parsing table. The Cray3 parsing table has entries to indicate that the AVN model data should be sent to the OSO FTP server and DAS1. The OSO FTP server parsing table table will have an entry indicating that the AVN model data is to be retrieved and stored locally. The DAS1 parsing table will have an entry to retrieve and store the data locally, and then send an ALERT to the next system in the hierarchy.
The most difficult part of DBNet is maintaining the parsing tables. All of the details we skipped over in the example are in the parsing table. DBNet processes data based on Message IDs and Host IDs. The parsing table defines these IDs. The Host IDs are fairly straight forward. Each host, normally distinguished by it's IP address, has a unique Host ID. The first section of the parsing table defines these Host IDs.
The Message IDs are a bit more complicated. When data is submitted to DBNet there are a minimum of three parameters required. The three parameters are the type, sub-type and filename. These three parameters are used to search the parsing table for a Message ID. The Message ID section of the parsing table contains a minimum of four fields, the type, sub-type, filename and Message ID. For example:
In the AVN model data example above the data is submitted to DBNet via the ALERT binding. The call to the ALERT binding looks like this:
dbn_alert MODEL AVN_PGB J883R /com/avn/prod/avn.19991207/avn.t00z.pgrb.tm00
MODEL AVN_PGB /com/avn/prod/avn.19991207/avn.t00z.pgrb.tm00.
The parsing table will then be searched again for the commands pertaining to this ALERT. The search is based on the message format (ALERT), the Host ID (1002) and the Message ID (MAVNPGB). All the commands that apply will be queued for execution by DBNet.