The Pyrrho Database Management System

Malcolm Crowe, University of the West of Scotland


Pyrrho is a compact and efficient relational database management system for the .NET framework on Windows and Linux (with Mono). It uses optimistic concurrency control, which is more suited for Internet use than stndard database products. It features role-based conceptual modelling and offers a natural per-role REST interface. It supports Json documents and audits all access to sensitive data. The database engine has a 1.2MB footprint, so is an ideal choice for embedded database applications. Despite its small size it is scalable and efficient, comparing well with commercial products.

It is currently available in Professional, Embedded and Open Source editions. All these editions of Pyrrho DBMS are free to use, and the latest versions are always available for download from this site. Open Source Pyrrho (OSP) includes server and embedded editions. Almost all of the code base is shared between these editions, but OSP's data files are not compatible with the professional version for security reasons. We are proud to share the source code for all of this functionality with the community.

For large databases Pyrrho needs a lot of main memory (RAM). For best results the computer main memory should be at least twice the size of the database. Pyrrho databases are most suited to data that includes a regular stream of new information that is to be kept indefinitely, for example, customer data, orders or accounting transactions, but there are recommended mechanisms for accommodating transient data.

Pyrrho uses a full multi-user client-server transactional architecture, including distributed and partitioned databases. The client libraries support use from all .NET clients, and additional components support access from Java, PHP and SWI-Prolog.

Pyrrho enforces a full transaction model, with concurrent transactions that are atomic, consistent, isolated and durable are automatically enforced. Optimistic transaction handling is used, avoiding client-side locking, so that database applications need to restart any transactions that fail, but really this is necessary with any kind of transaction management system. No data is ever lost. Deleted or modified data can always be recovered if required. Pyrrho takes its name from the ancient Greek philosopher who founded the school of Scepticism: Sceptics support investigation and are suspicious of dogmatic, uncheckable utterance.

The implementation of Pyrrho is in the C# 2017 language. Pyrrho's data is located normally in a single file per database. Pyrrho uses variable-length records and truncates short or null values, to reduce the size of disk files.  Files are split into 4GB segments if necessary. Data files are portable between locales and machine platforms, and in particular are independent of machine or platform dependencies such as the number of octets used for integers, doubles etc.