McObject’s eXtremeSQL database interface is a high-performance implementation of the SQL database programming language for eXtremeDB. eXtremeDB combined with eXtremeSQL is an ideal solution for application development in fields where real-time responsiveness is a must and SQL is the dominant database language.

eXtremeSQL can be used as an embedded database system, or with the provided xSQL program, as a powerful and highly flexible database server and client that can manage local, remote, and distributed eXtremeDB databases. xSQL is fully configurable through a simple text-based (JSON) configuration file, and can execute SQL statements interactively or via batch scripts. In addition, xSQL supports a variety of commands that exercise eXtremeDB features such as online/incremental backup and restore, performance monitoring and diagnostics, and more. Because xSQL can operate as both a database server and as a client, it provides access to the full breadth of eXtremeDB’s capabilities, without coding.

Benefits of using eXtremeSQL include:

The image below depicts eXtremeSQL used as an embedded SQL engine. The libraries are linked with the application; there is no separation between database server and database client. Inter-process communication and associated latency are eliminated.


The image below depicts eXtremeSQL used in client/server mode.  The provided xSQL operates as the database server and as one of the clients. Other clients are created in C/C++/C#, Java, Python, etc, either with direct access to the server or through JDBC or ODBC.


The image below illustrates eXtremeSQL used as a distributed database system. The database is partitioned horizontally (a subset of each tables’ rows are stored in each shard). Each shard has two replicas maintained by eXtremeDB High Availability. Shard 1 and Shard 2 are presented as a single logical database to the client application. Queries are distributed by eXtremeSQL to one node in each shard (which may be the master or one of the two replicas), which are executed in parallel at each shard. The Distributed SQL Engine collects the partial result set from each shard, merges them, and presents a single result set to the client application. Shards/nodes can exist all on one system (to take advantage of the processing power of multiple cores) and/or distributed to many servers to also take advantage of parallel I/O (i.e. if each shard has its own storage system).