Skip to main content
Select Page

Embedded Database FAQs

How can we help with your next project?

eXtremeDB Embedded FAQs

We hope that you find the following embedded database FAQs helpful. If you have any further questions please call us at 425-888-8505 or email us at info@mcobject.com.

eXtremeDB for High Performance Computing combines our available modules into the most powerful solution for managing time series data. Please follow this link to eXtremeDB for HPC FAQs.

What is eXtremeDB?

eXtremeDB is a database system product family. Originally developed as an in-memory database system (IMDS) for use in embedded systems such as industrial control and telecommunications equipment, eXtremeDB retains a core IMDS architecture but provides optional persistent (on-disk) storage and supports hybrid database designs that incorporate both in-memory and persistent storage. It is used widely in embedded and non-embedded applications that require fast performance, efficient hardware utilization and a high degree of developer flexibility. This link will take you to a complete list of key features.

What are eXtremeDB modules?

In addition to the original, core product, the eXtremeDB family of products includes multiple modules that are licensed as add-ons, and provide capabilities ranging from SQL support to database clustering and high availability. The editions are not mutually exclusive. Please follow this link for an overview of the different eXtremeDB modules.

What is eXtremeSQL?

eXtremeSQL is a high-performance implementation of the SQL database programming language for the eXtremeDB product family. With eXtremeSQL, McObject targets enterprise software developers and other prospective users who prefer to create database applications using SQL. eXtremeSQL also supports horizontally partitioned (sharded) databases and distributed query processing for elastic scalability to accommodate truly Big Data.

What is eXtremeDB for High Performance Computing?

eXtremeDB for HPC is McObject’s specialized database system for capital market and IoT Big Data applications. eXtremeDB for HPC comprises a super-set of the eXtremeDB modules, i.e. it combines all of their capabilities, and adds additional ones. Chief among these are its support for column-based handling of time series data (market data, such as trades and quotes, and IoT sensor data), and an extensive library of vector-based functions for statistical analysis of columns of time series data. To better serve this specialized technology market and to present the product’s unique features, McObject maintains a separate FAQ page for eXtremeDB for HPC.

eXtremeDB supported platforms

Embedded Platforms:

eXtremeDB was designed and implemented to be highly portable. Currently, eXtremeDB runs on Win32 and Win64 platforms, Linux, many Unix platforms, and various embedded operating systems including VxWorks, INTEGRITY, ThreadX, eCos, FreeRTOS and QNX, and target CPUs including x86, PowerPC, ARM, MIPS, and others. The list of supported platforms is constantly expanding.

The eXtremeDB runtime environment

The eXtremeDB runtime environment provides:

  • Accelerated transactions. The eXtremeDB in-memory database system stores data entirely in main memory, eliminating the need for disk access, caching and other processes that add overhead to disk-based databases. The eXtremeDB transaction manager is optimized for high transaction rates. When persistence is required, eXtremeDB gives you choices.
  • Ultra-small footprint. eXtremeDB was originally designed to be an in-memory embedded database system. In this configuration, it eliminates many artifacts of persistent database systems and enables an unbelievably small code size of approximately 200K (opens in a new tab). As a persistent database system, the code size of eXtremeDB can still be under 200K. And, as a full-on SQL relational database system, the code size is still on the order of just 500K. This makes eXtremeDB a powerful enhancement to many intelligent devices with resource limits that, until now, ruled out the use of an embedded database system.
  • Direct data access. Earlier data management technology required copying records from database storage to cache, and then to a new location for manipulation by the application. By operating as an in-memory database system that works with data directly in main memory, eXtremeDB eliminates the overhead of duplicate data sets and of copying data between locations.
  • No Translation. eXtremeDB stores data in the exact form in which it is used by the application – no mapping a C data element to a relational representation, for example, or requiring additional code to pick fields from tables and copy them to C structures. By eliminating this overhead, eXtremeDB reduces memory and CPU demands.
  • High reliability. For data integrity, eXtremeDB transactions support the ACID properties, ensuring that operations grouped into transactions will complete together or the database will be rolled back to the pre-transaction state.
  • Native language APIs, as well as SQL. The native language API for C/C++ derives from the given application’s database schema and thus reflects the purpose for which it is being used. For the runtime environment, this means more reliable code – the C/C++ compiler will catch data typing and assignment errors when the application is built. This makes eXtremeDB-based applications more reliable, since it is much harder for coding errors to make it into the final build. For Java, the language itself can be the schema language by incorporating decorations into the class definitions, which are used at runtime to build the database dictionary. Multiple languages can use the same database by using one language to generate the database schema for the other language(s).  C# can be used with the ODBC .NET Managed Provider.

Download a free evaluation of the eXtremeDB in-memory and persistent database.

The eXtremeDB development environment

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 IoT/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. Approximate Nearest Neighbor (ANN) indexes enable fast similarity searches directly inside the database. They are natively integrated and transactionally consistent, rather than a bolted-on external library that doesn’t participate in the rest of the data flow. eXtremeDB offers hash indexes for exact match searches; tree indexes for pattern match, range retrieval and sorting; and object-identifier references, for direct access. Specialized indexes support domains such as IP/telephony (Patricia trie), geospatial (R-Tree), query-by-example (KD-Tree) and fuzzy search (Trigram). Indexes are constructed and optimized according to the storage media. For an in-memory database, rather than storing duplicate data, indexes contain only a reference to data, keeping memory requirements for an in-memory database to an absolute minimum. For a persistent database, index structures include the indexed data to minimize I/O operations and optimize performance. With the eXtremeDB embedded database and native language C/C++ API, the developer focuses on the data definition first, then eXtremeDB generates the API from this definition via the schema compiler.

The result is:

  • An easy-to-learn API that is optimized for the application.
  • Code that is more legible as well as easier to write and maintain.
  • Compile-time type checking that helps eliminate coding errors.

Example: The following is a (simple) class and an example of the API to put a new value into a record in the database:

Watch the Webinar: Using Data Indexes to Boost Performance and Minimize Footprint in Embedded Software

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 examine the call stack to find the source of corruption. The eXtremeDB runtime implements many verification traps and consistency checks like this. 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 link 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 strings, boolean, binary, structures, arrays, vectors and BLOBs
  • Querying methods include hash indexes for exact match searches
  • Native ANN indexes that are transactional, and optimized for embedded environments
  • 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

Download eXtremeDB for a free a 60 day evaluation, review our Technical FAQ page, or online documentation. (opens in a new tab)

Shared memory databases

The eXtremeDB database system can operate in conventional memory, or shared memory for multi-processing environments such as Windows, Linux, Solaris, QNX, etc. When in shared memory, an eXtremeDB database or cache for a persistent 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 and/or the cache of a persistent database. The shared memory eXtremeDB runtime is built as a different binary (library or archive) than the conventional memory version. Depending on the target platform, eXtremeDB supports one of the following three synchronization methods when managing shared memory databases:

  • A System V semaphore mechanism is implemented for operating environments such as Sun Solaris and Linux platforms (System V semaphore methods are associated with system-wide integers, called keys, which are associated with files).
  • A POSIX shared memory implementation that is suitable for QNX, AIX, HPUX, Linux, Lynx, SunOS and NetOS.
  • A Win32 shared memory implementation is deployed for the Microsoft Windows Embedded and Microsoft Windows classic platforms.
  • An INTEGRITY native synchronization implementation.
  • An eCos native synchronization implementation.
  • A ThreadX native synchronization implementation.
  • A uCos native synchronization implementation.
  • A VxWorks native synchronization implementation.
  • A WinRT native synchronization implementation.

Click here to try a free evaluation of the eXtremeDB on-disk and in-memory database.   Or review our Technical FAQ page, or online documentation (opens in a new tab).

What is the eXtremeDB REST API?

eXtremeDB provides Web Services using the popular REST (Representational State Transfer) (opens in a new tab) protocol. The REST server can be accessed using any language that supports HTTP and JSON, which includes but is not limited to C/C++, Python, Java and C#. Note that the REST server is simply an HTTP server that serves JSON content, and thus conforms to the HTTP and JSON standards.

Learn more about the eXtremeDB embedded database in our extensive documentation. (opens in a new tab)

What makes eXtremeDB a good data management solution for Edge AI?

eXtremeDB provides a comprehensive Edge AI data management solution by integrating an ultra-lightweight 8 KB Edge Client for store-and-forward telemetry capture with native time-series processing and Approximate Nearest Neighbor (ANN) indexes like HNSW and Vamana. The thin Edge Client reliably transmits structured multi-sensor streams to upstream nodes, where eXtremeDB’s time-series engine aligns data across varying sampling rates, applies built-in vector math to extract features, and stores compact vector embeddings alongside raw sensor histories. This architecture empowers resource-constrained edge devices to execute hybrid queries combining temporal filters with millisecond similarity searches, enabling pattern recognition and anomaly detection locally without cloud dependencies.

How can I evaluate eXtremeDB?

The eXtremeDB runtime is platform-independent, so you don’t need the actual hardware platform to evaluate eXtremeDB features and its use, or to build test benchmarks or a prototype for the eventual application. Download one of the eXtremeDB evaluation packages. Evaluation packages are currently available for 32-bit and 64-bit Windows, QNX, Linux, VxWorks, INTEGRITY RTOS, HP-UX, and Solaris. These packages include complete documentation, the eXtremeDB runtime, the schema compiler, and plenty of samples that illustrate various features and programming techniques. Evaluation packages for other eXtremeDB modules (e.g. High Availability, Cluster, etc.) are available upon request – please email us.

We strongly recommend you start the evaluation process by visiting the online documentation (opens in a new tab) pages that walk through the installation. Install the software using the provided installation program. Build the samples according to the readme file. Spend some time reading through the User’s Guide and, as different features are discussed, refer to the appropriate samples. Build some tests to measure the performance and memory usage. Contact us if you need assistance with the evaluation process. We will make sure that you get answers to all your questions in a timely manner, and will gladly assist you.

You can find more about our STAC (opens in a new tab) independently audited benchmark tests here.

How are software updates handled?

McObject offers an annual technical support and software maintenance contract. This entitles the developer to unlimited technical support through any channel (telephone, email, etc.), free updates (version number updates to the right of the decimal point, e.g. from 7.0 to 7.1) and free upgrades (version number updates to the left of the decimal point, e.g. from 7.0 to 8.0).

Is source code available for eXtremeDB?

Yes.  McObject’s philosophy is to make the source code available and affordable for developers.  Please contact us for more information.

Is it possible to get pre-built object code versions of the eXtremeDB runtime?

McObject provides pre-built binaries of the eXtremeDB library, eXtremeDB extensions and Data Definition Language compiler for most architecture/compiler combinations. For embedded platforms that we don’t directly support, if you provide us with your tool chain, we’ll build the object code for your target system.

Who is using eXtremeDB?

eXtremeDB provides a fast, cost-effective embedded database solution in numerous industry sectors, including consumer electronics, network infrastructure and telecom devices, military/aerospace, industrial control and real-time financial applications.  We are honored to be found in over 70,000,000 deployments around the world, in quality products by industry leaders.

Follow this link to eXtremeDB for HPC FAQs.

If our embedded database FAQs page did not answer your questions, we encourage you to contact us and our engineers will get back to you.