View a three minute movie introducing the eXtremeDB embedded database!
Download the eXtremeDB data sheet (PDF)
The eXtremeDB™ Standard Edition embedded database is McObject's core product: an exceptionally fast database, designed for performance, with a strict memory-based architecture and direct data manipulation. (For a database that incorporates on-disk persistence, see McObject's eXtremeDB Fusion product.) Storing and manipulating data in exactly the form used by the application removes overheads associated with caching and translation. Typical read and write accesses are at the level of a few microseconds, or less. The engine is reentrant, allowing for multiple execution threads, with transactions supporting the ACID properties, assuring transaction and data integrity.
The eXtremeDB Runtime Environment provides:

| eXtremeDB is designed for High-Performance: optimized memory managers, hash and tree-based indices, multiple data layouts, transactions with priority scheduling and an application-specific API. |
In addition to the eXtremeDB embedded database that operates in conventional memory, a shared memory version is available for multi-processing environments such as Solaris, QNX or Linux. With this version, an eXtremeDB database is created in shared memory and mapped to the local address space of each process, thereby allowing multiple processes and multiple threads within each process to share eXtremeDB in-memory databases.
The shared memory eXtremeDB runtime is built as a different binary (library or archive) than the conventional memory version. A single process can still create and connect to the database from multiple threads using the shared memory runtime, however, the database(s) will be placed into shared memory instead of the process’ memory. Depending on the target platform, eXtremeDB supports one of the following three synchronization methods when managing shared memory databases:
A System V IPC mechanism is implemented for operating environments such as Sun Solaris and Linux platforms (System V IPC methods are associated with system-wide integers, called keys, which are associated with files).
A POSIX shared memory implementation that is suitable for QNX 4.x and QNX 6.x platforms.
A Win32 shared memory implementation is deployed for the Microsoft Windows Embedded and Microsoft Windows classic platforms.
McObject developed the eXtremeDB XML Extensions to facilitate simple schema evolution and the exchange of data between the eXtremeDB embedded database and external systems. With the XML-enabled version, the eXtremeDB schema compiler generates new interface functions for each object that provide the means to

The XML interface functions could be used, for instance, in concert with the eXtremeDB event notifications to cause data to be shared between an eXtremeDB embedded database and other XML-enabled systems when something of interest changes in the database. The XML interfaces can also be used to facilitate simple schema evolution by exporting the database to XML documents, adding/dropping fields, indexes, and classes, and importing the saved XML documents into the new database.

eXtremeDB XML and eXtremeDB XML schema encoding were developed in accordance with the W3C SOAP encoding recommendations. Thus, the XML interface functions could also be used in conjunction with an embedded Web server to deliver an embedded systems database context (from an application running within a consumer electronics device, for example) to a Web browser or any other SOAP client. The picture below illustrates this process.

W3C SOAP encoding recommendations can be found in the following documents:
http://www.w3.org/TR/soap12-part0/
http://www.w3.org/TR/soap12-part1/
http://www.w3.org/TR/soap12-part2/
XML schema encoding recommendations can be found in the follow W3C documents:
http://www.w3.org/TR/xmlschema-0/
http://www.w3.org/TR/xmlschema-1/
Developers strive to produce readable, maintainable, efficient code in the shortest possible time. The eXtremeDB in-memory database system (IMDS) includes several features that boost the developer’s capabilities when integrating the database in demanding real-time applications. Incorporating third party software often means learning and adopting an API that does not completely fit an application. eXtremeDB’s project-specific API ensures that each database operation in the API reflects the type of the data being manipulated.
To help in application debugging, McObject’s embedded database includes numerous traps in the runtime code; these can be selectively disabled as development and testing progresses, to optimize the application for speed.
McObject offers full source code, to give an in-depth understanding of eXtremeDB within an application. In addition, eXtremeDB supports virtually all data types as well as extremely efficient indexing for queries. For querying, McObject provides hash indexes for exact match searches; tree indexes for pattern match, range retrieval and sorting; and object-identifier references, for direct access. Rather than storing duplicate data, indexes contain only a reference to data, keeping memory requirements for the RAM database to an absolute minimum.
With eXtremeDB embedded database, the developer focuses on the data definition first, then eXtremeDB generates the API from this definition via the schema compiler.

The result is:
Example: The following is a (simple) class and an example of the API to put a new value into a record in the database:
|
Progressive error detection and consistency checking features
If an application mistakenly passes a corrupted transaction or object handle into a runtime method, eXtremeDB (by default) raises a fatal exception and stops the execution of the program. In most cases, the application developer can then withdraw and examine the call stack to find the source of corruption. The eXtremeDB runtime implements many verification traps and consistency checks. Obviously, that does not come free; the runtime requires extra CPU cycles and space for that. However, when the application is debugged and consistently passes verification tests, developers can generate the optimized version of the eXtremeDB runtime, removing the traps and internal checks to restore valuable clock cycles.
Complex data types and efficient queries
Supports virtually all data types, including structures, arrays, vectors and BLOBs
Querying methods include hash indexes for exact match searches
Tree indexes support queries for pattern match, range retrieval and sorting
“Voluntary” indexes for program control over index population
Object-identifier references provide direct data access
Autoid for system-defined object identifiers
Rather than storing duplicate data, indexes contain only a reference to data, minimizing memory requirements
Synchronous/asynchronous event notifications
Optional object history
Embedded Platforms:
VxWorks
QNX Neutrino
Various Real-Time Linux distributions
Lynx OS
RTXC Quadros, RTXC
INTEGRITY OS
Microsoft Windows Embedded Platforms
Windows Real-Time Extensions
Bare bones boards (no operating system required)
Server and Desktop Platforms:
Development Environments: