McObject started in 2001 with the launch of the eXtremeDB In-Memory Database System.
eXtremeDB offers a multi-version concurrency control (MVCC) optimistic transaction manager and an alternative "pessimistic" MURSIW (MUltiple Reader, Single Writer) transaction manager.
eXtremeDB stores pages in a compressed format and decompressed when accessed by the application. It uses run-length encoding (RLE) compression for time-series data (i.e., fields defined as the
sequence data type). Compression and RLE are separate features that can be used individually.
eXtremeDB also compresses network communications between a server and device with eXtremeDB’s Active Replication Fabric for IoT networks.
eXtremeDB database offers multiple indexes, including the following:
B-Trees for common sorting and searches, insertions, and deletions R-Trees for geospatial indexing (common in GPS/navigation systems) Hash tables for quickly locating a single unique index entry Patricia trie index, which speeds searches in networking and telephony applications Trigram indexes are ideal for text searches when the exact spelling of the target object is not precisely known. It finds objects which match the maximum number of three-character strings in the entered search terms, i.e., near matches. “Custom indexes” or b-trees that allow the application to define the collating sequence of entries; this is useful in implementing soundex algorithm searches, for example KD-Trees or k-dimensional trees, for spatial and pattern-matching tasks and in applications where query predicates contain various combinations of object fields (for example, to construct Query-By-Example, or QBE features)
eXtremeDB enables the developer to combine both database paradigms – in-memory and on-disk – in a single database instance. Specifying one set of data as transient (managed in memory), while choosing persistent storage for other record types, requires a simple database schema declaration.
Lua, Python or C++ based stored procedures run in the context of the SQL server and therefore minimizes client-server inter-process communication and attendant network overhead, and fully utilizes the multi-core nature of modern hardware.