Fieldpine Logo

 Quick Links: Site Home | Gds Documentation | All Documentation

Global Data Server Programs

A running Gds server consists of several different programs running in parallel and communicating using Query Exchange.

The Mall provides a central directory where client programs register their presence and the location of their "billboard". The purpose of the Mall is to act solely as a directory of programs currently using the Query Exchange

Each program creates one or more billboards. This is an area into which the program places requests for information or actions that it knows other programs will complete. Each program only places requests into its own billboard.

When a running program requires some information or wants something done, such as "Please fetch product #1234", it creates a request and places it in its own billboard. This alerts other programs that something is required and those that can answer repsond with the reply.

This completely frees the source program from how and where the information is processed. It also creates seperation of concepts and avoids excess code being present in every program. Specialised programs can be written to answer very specific requests, such as a "Product Information Program"

Program List

The following programs are commonly seen using Query Exchange

Acts as webserver and converts HTTP requests into requests. Web browser traffic to a GDS system will start by coming through this program. (more)
Retrieves and provides images and dynamically generated charts. Capable of rescaling, opacity adjustments and retrieval from image libraries
Retrieves and provides map imagery and dynamically generated maps. Capable of rescaling and marking points on maps.
Works with address, validating, reformating and providing geographic based demographics. (more)
Dictionaries, word lists, parts of speech, names. Also includes spelling checks and other functions relating to words
Interacts with Microsoft Access Databases
Functions relating to the Fieldpine Retail, such as product management, stock control, customer management, reporting.
Retrieves static files and symbol substution
Handles access to the data layer, updating logs and the database as necessary
Interacts with Query Exchanges on other machines to move requests in and out of local machiness
Provides matching from requests to responders allowing runtime version selection. Also takes care of launching external responders that are not constantly running. (more)
Interface to Windows service when Gds is being run as a service. (more)

Programmer Notes

For a programmer, the Query Exchange can be seen as a way of extending an application without needing to add more DLLs or code to your program. Need to send an email? Generate a request with the details and place it in the Query Exchange - the responsible program will find and execute it for you.

There are several advantages to this approach:

Query exchange is able to pass messages at very high rates between processes, but it should still only be used for major tasks. Reading or writing records to a database would be a good use of Query Exchange, but replacing AddTwoNumbers() function would not - the calling overhead is greater than the time to process. However, you might seperate AddTwoNumbers() into Query Exchange if you may wish to replace it in future (eg ExtractTaxFromAmount() )

General Notes

During startup, the first process to create the Mall also does the following steps:

  1. Removes the file CrashStartupGds.txt
  2. Checks total memory is greater than 1Gb, and creates a new file called CrashStartupGds.txt if problems
  3. Checks current free disk space is greater than 1Gb, and creates a new file called CrashStartupGds.txt if problems

Agent programs will typically create a file called CrashStartupProgram Name.txt during startup to report program specific information, although they are encouraged to append to CrashStartupGds.txt file also.

Performance Considerations

Systems require at least 1Gb of memory. They will operate below this but performance will be negatively affected.

If using a Virtual Machine, do not allocate more virtual cores than the underlying physical machine. Gds takes different optimisations based on number of CPU cores. If you run a VM with 8 cores on a physical machine with only 2 cores, then Gds will allocate tasks to all 8 cores.

Query exchange will not perform well on single core/single CPU systems, it actively uses programs communicating via shared memory. If you only have one CPU core, the scheduler context switches can degrade performance.

If Gds is running on a NUMA machine ensure that all agents are running in the same group. Gds uses a shared memory interconnect to commuicate between processes


The current Query Exchange request list can be viewed using a browser (if enabled)

This sample shows the following: