The following topics are listed under the 'general' topic area:

What is Polyhedra?

Polyhedra couples the benefits of an SQL relational database with features for real-time applications, such as built-in fault tolerance, data persistence and event driven data change notification. Whether running on an embedded system or on a server, Polyhedra's reliable client-server architecture has been successfully deployed in high performance and mission critical applications worldwide.

The company Polyhedra was founded in the UK in 1990 to bring relational database technology to the real time market - a market which traditionally had not been served well by database management systems. It was bought by Enea Data in 2001.

While designed primarily for embedded systems, Polyhedra also offers a solution for server-level applications. See the pages Polyhedra for Embedded Systems and Polyhedra for Server-level applications for more details.

What was Polyhedra designed for?

Polyhedra was designed to provide a coherent set of development tools for database applications in several specific market areas normally not well served by conventional database vendors (both Object-oriented and Relational).
The core Real Time Relational Database (RTRDB) is designed to sit in an Open Systems environment employing TCP/IP and UDP for connections to clients and other database servers.

The toolset contains standards-conforming APIs for those wanting to write client applications in C, C++ or Java, and for use on Windows it also has an ODBC driver and OLE DB data Provider. As client applications can be colocated or remote from the database(s) they are using, great flexibility is provided in the organisation of the overall system.

What is different about Polyhedra?

Polyhedra offers significant advantages over traditional DBMS systems:

can Polyhedra databases be accessed from web browsers?

The Polyhedra database can be user-programmed to send and receive arbitrary TCP/IP messages. The database can thus be programmed to exhibit the capabilities of a full web server, allowing full access by standard Web browsers; sample class definitions are supplied with the evaluation system and is available to all registered customers. This technology has been used to implement the web server running on our support web site, http://support.polyhedra.com/eval.htm.

Obtaining Polyhedral Models and Pictures of Polyhedra

Despite the name, the Polyhedra company does not make, sell, distribute, research or hold information about the aspect of mathematics known as polyhedral models. We suggest instead the following site as a starting point for your seaches if you want information on this topic:

The Geometry Junkyard.

A nice set of picture of Polyhedra can be found at http://www.mathconsult.ch/showroom/unipoly/unipoly.html.

The WinkWorks site has a good collection of links to sites about Polyhedra.

What are 'active queries'?

The main purpose of an active query is for a client to monitor information in the server, and be told when data changes without having to poll. In fact, it is better than that, since the client is not just told that a change has occurred, but is told just enough information to bring it up to date.

When an active query is established, the client is given the initial results, and then the server sets up internal triggers, so that whenever anything occurs in the database that would invalidate the previous results, the query manager is told. At the end of the transaction in which the change or changes occurred, assuming no rollback occurs the query manager calculates what information has to be sent to the client, which is then sent through to the client as a 'delta', a batch of changes. The internal trigger mechanism in the core database engin is the essential feature that means no time is wasted re-evaluating queries that have not been effected by a given transaction.

The query manager has two mechanisms for ensuring that the communications traffic is not excessive. Firstly, if a client is running slow and not able to keep up with all the deltas it receives, the server needs to control the number of deltas sent. This is done by only sending a delta when the previous one had been acknowledged; if many relevant transactions had occurred in the meantime, the client is only told about the current state, not any intermediate ones.

The second performance enhancement is the ability for the client to specify a bandwidth limit when the query is established. If updating a mimic diagram, for example, viewers will not be able to absorb too-frequent updates, so it makes sense to limit the delta to at most, say 10 per second. In fact, the limit is expressed not as a frequency - which might be taken as implying some form of polling - but as a time period: once one delta has been sent, further deltas are blocked for that interval or until the client acknowledges the outstanding delta, whichever is later.