Rolling Horse Ranch
Technical Services

Servers

One of the applications I have designed and implemented involves receiving location data from remote devices over the Internet, storing that data in a database, and allowing users to retrieve maps based on that data over the World Wide Web. Each device sends a message in a format derived from NMEA-0183. A server runs a daemon that listens on a particular port for these messages. After the message is parsed and validated, it is stored in a MySQL database. A copy of the raw message data is also stored in a separate table for debugging purposes. The Web-based end-user interface allows individuals to view maps giving the location of a particular device. The maps can be generated by a dedicated map server or by a third party providing such services.

The daemon collecting the location data runs on one server, while the MySQL database and the map generating program each run on their own servers. The map server also handles the interface to third-party map providers, if required. At regular intervals the first server purges old location data from the database. Most parameters (e.g. whether to use the dedicated map server or a third party) can be set via configuration files or an entry in a database table, allowing great flexibilty.