# The eXtremeDB® Product Family

Real-time and embedded software manages growing volumes of complex data, to support advanced application features. The need for performance and reliability, on shorter product development cycles, is driving more organizations to incorporate proven, commercial off-the-shelf (COTS) database system components in their designs. The eXtremeDB database management system product family combines extreme performance, reliability and developer efficiency in an industrial strength database engine.

eXtremeDB Embedded is McObject's core product. It is designed for performance, with in-memory and/or persistent storage. With the C/C++ native API, data is stored and manipulated exactly in the form used by the application, removing the overheads of caching and translation. (Read below about eXtremeSQL.) 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 for data integrity. Native C/C++ data types are supported, along with several higher level data types such as `string`, `datetime`, and support for vertical (columnar) storage of time series data (e.g. for Internet of Things (IoT), Financial and other use cases).

An in-memory database system offers superior performance and the possibility of very small RAM, CPU and storage demands. In-memory databases boost speed by eliminating file system I/O, multiple data copies, and redundant processes, such as caching. This streamlined design can also dramatically reduce system footprint.

eXtremeDB enables the developer to combine in-memory and persistent storage in a single database. Persistent storage database management systems cache frequently requested data in memory, for faster access, but write database inserts, updates and deletes through the cache to persistent storage. Byte-for-byte, disk storage costs less than memory, and requires less physical space: RAM chips can’t yet approach the density of a micro-drive, for instance. So for small form-factor devices with large storage needs, and for so-called "Big Data", such "spinning memory" can be better.

eXtremeDB/rt is the first and only deterministic embedded database management system for mission- and safety-critical hard real-time applications. Mission- and safety-critical systems' software designs embody key characteristics for which temporal correctness is essential. Deterministic, predictable, and fully controllable software components that complement modern real-time operating systems are in demand. The evolution of data management in avionics, railroad, process control, and autonomous systems in the last decade has commanded the use of off-the-shelf database management systems in these applications.

eXtremeDB/rt introduces new transaction schedulers that add deadline semantics and enforce database transaction priorities and deadlines. eXtremeDB/rt preserves the temporal validity of data through time-cognizant transaction processing that guarantees predictable execution of critical transactions, while ensuring transactions’ ACID properties.

eXtremeDB/rt is available for the most popular real-time operating systems (RTOS) on select hardware platforms.

eXtremeDB Active Replication Fabric, included with eXtremeDB Embedded, provides data exchange between "Internet of Things" (IoT) edge devices and database storage on remote systems. Several distinct characteristics of the IoT makes its data management challenging and different from most standard distributed architectures supported by database management systems, eXtremeDB included. eXtremeDB Active Replication Fabric (ARF) creates an eXtremeDB-based storage foundation for distributed IoT applications.

eXtremeDB Transaction Logging, included with eXtremeDB Embedded, provides recovery capabilities for eXtremeDB in-memory databases in the event of failure. When transaction logging is active and enabled for the database, all updates to the data objects are written to a file on persistent storage with append-only writes (sequential I/O) and periodic snapshotting. The append-only strategy optimizes performance by avoiding random writes. If the memory content is damaged or destroyed, the exact state of the database is restored by reloading the last snapshot and an automatic roll-forward procedure from the transaction log. Transaction logging does not alter the all-in-memory architecture of eXtremeDB, yet ensures data recovery in the face of software or hardware failures. In addition, eXtremeDB Transaction Logging can be used

- for "Data Relay" to facilitate seamless, fine-grained data sharing between eXtremeDB applications and external systems such as enterprise DBMSs
- to create a persistent queue of events

eXtremeDB High Availability is a fault-tolerant version of eXtremeDB designed to answer the challenge, "How can a database survive the failure of the software or hardware environment in which it operates?" Designed to support software systems that cannot afford to fail, eXtremeDB High Availability delivers the highest degree of reliability, along with its unsurpassed performance and exceptionally small footprint by maintaining two or more synchronized databases within separate hardware instances using communication channels implemented over standard protocols.

eXtremeDB High Availability includes eXtremeDB Cluster, McObject’s real-time distributed database implementation. eXtremeDB Cluster replicates a database across multiple hardware nodes, enabling two or more servers to share the workload. It is unique as the first clustering database system to offer an embedded architecture: the database system runs within the application process at every node, eliminating the need for separate client and server modules. This design eliminates inter-process communication (IPC) overhead between processes within each node of the cluster, accelerating performance. It also reduces complexity, contributing to higher reliability, simplified deployment and maintenance, and lower cost of ownership.

McObject's eXtremeDB SQL, eXtremeSQL ®, is a high-performance implementation of the SQL database programming language for the eXtremeDB database system. eXtremeSQL targets real-time enterprise software development and strengthens eXtremeDB’s appeal in fields such as banking and securities trading, where real-time responsiveness is a must and SQL is the dominant database language. Built on the unsurpassed performance of eXtremeDB, eXtremeSQL delivers fast processing of dynamic SQL queries. eXtremeSQL provides broad coverage of the ANSI SQL standard, plus eXtremeDB-specific extensions, primarily for time-series data and analytics, including support for nearly all eXtremeDB data and index types.

eXtremeDB for HPC builds on the core eXtremeDB functionality, adding several features and benefits. A library of vector-based math functions complement support for `Sequences` (vertical/columnar storage) of time-series data; e.g. historical trade data (datestamp, open, high, low, close, volume), IoT data, etc. eXtremeDB is unique in that it combines conventional horizontal (row-based) storage and vertical (column-based) storage within a table. Column-based layout enables vastly superior performance for processing/analyzing time series data (e.g. to detect trends, events, etc.). eXtremeDB for HPC includes a statistical analysis library consisting of over 100 functions for performing analysis and transformations on eXtremeDB sequences that can be pipelined for an even greater performance advantage. Pipelining allows the output of one function to flow directly into the input of the next function in the pipeline, without the need to "materialize" the interim results. In layman’s terms, we have moved data management/analysis from merely "in-memory" to "on-chip". Modern CPUs and their L1/L2 cache operate at 2x to 3x the performance of fetches from main memory, so keeping data flowing through a pipeline on-chip, versus materializing temporary results in main memory yields a tremendous performance, and competitive, advantage for eXtremeDB and customers that adopt it.