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:
- Co-exists with native eXtremeDB. Use eXtremeSQL alongside the eXtremeDB embedded database API in the same system, to take advantage of both maximum performance and higher level access.
- Support for the extensive library of pipelining vector-based statistical functions for time series data analytics in eXtremeDB for HPC.
- Compatible with eXtremeDB High Availability, eXtremeDB Cluster, and eXtremeDB Active Data Replication for the IoT.
- Scalability through sharding and a sophisticated distributed query engine.
- Advanced JDBC and ODBC drivers.
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).