Pyrrho is a compact and efficient relational database management system for the .NET framework. It supports many features found in SQL2008 including subtypes and advanced OLAP functions, and includes built-in support for OWL 2 data types. The database engine has a 750KB footprint, so is an ideal choice for embedded database applications. Despite its small size it is scalable and efficient, comparing well with commercial products.
All editions of Pyrrho are free to use. The Standard and Embedded editions are compatible with each other, and the latest versions are always available for download from this site. Open Source Pyrrho (OSP) is also available for download, and shares almost all of the code base with the other editions, but OSP's data files are not compatible with Pyrrho DBMS for security reasons. OSP has server, embedded and Silverlight versions, and enjoys all of the features of PyrrhoDBMS together with an implementation of the Java Persistence API v1.0. We are proud to share the source code for all of this functionality with the community.
The Pyrrho servers use a robust TCP-based protocol for communication with clients. The usual .NET data client interfaces, such as DataReader, are supported by the Pyrrho connector, and the REST and data model support in Pyrrho are designed for compatibility with ADO.NET Data Services. PHP and SWI-Prolog are also supported.
For large databases Pyrrho needs a lot of main memory (RAM). For best results on a single server 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: for transient data it is recommended to use a separate database and a mechanism for multi-database connections is available.
From version 4.0 of Pyrrho multiple servers can share the task of managing a database. In this configuration, each database has a nominated transaction master; but the data can be replicated on several servers, and several servers can handle query processing.
Pyrrho enforces a full ACID transaction model. Optimistic transaction handling is used, avoiding 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# language, so works on the .NET Framework on Windows and Linux. 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.