Simba Technologies
Simba Technologies

SimbaEngine X SDK 10.1.17
Developing Drivers for Data Stores Without SQL

Introducing the SimbaEngine X SDK

The Simba Engine X Software Development Kit (SDK) is a collection of database access tools packaged in a flexible, reusable set of components. These components are used to create custom database drivers for any data store, even if the data store is not SQL-capable. Drivers can be built to access both local and remote data stores.

This guide introduces the components of the SimbaEngine X SDK and explains how you can use them to create custom drivers for ODBC, JDBC, OLE DB and applications.


This guide explains how to build a driver for data stores that do not support SQL. If you want to build a driver for data stores that support SQL, see Developing Drivers for SQL-capable Data Stores.

Creating a Custom Driver with the SimbaEngine X SDK

The components of the SimbaEngine X SDK implement all the required functionality of ODBC, JDBC, OLE DB, and, as well as handling session management, state management, data conversion, and error checking. These components provide an abstraction layer to insulate your underlying driver functionality from any changes to data access standards. By basing a custom driver on the SimbaEngine X SDK, you can leverage the experience of leaders in data connectivity.

For data stores that do not support SQL, the SimbaEngine X SDK provides an SQL parser and an execution engine to translate between SQL commands and your custom datastore API.

For data stores requiring remote deployment, the SimbaEngine X SDK allows you to re-build your existing driver into a server for a client/ server deployment. This allows you to build your driver as a server that reside near data source, then deploy an ODBC or a JDBC client that handles communication with the end user's application. For more information about client-server deployment, see the SimbaClientServer User Guide at

Data Store Interface Implementation (DSII)

To write a custom driver using the SimbaEngine X SDK, you write a component called the "DSI implementation" to access your data store. You then link this component with the SimbaEngine X SDK components, which takes care of meeting the data access standards, and optionally converting SQL commands to commands that your data store can understand. The result is a shared object: a .dylib, .jar, or .dll, .so file, depending on your development platform. Applications, such as Tableau or Microsoft Excel, use this shared object to access your data store, even if your data store is not SQL-enabled.

Example - Build an ODBC Driver for a non-SQL-Capable Data Store

Many data stores, like Big Data, object oriented, and XML data stores, do not understand SQL. To create a custom driver for these data stores, use the same components shown above, with the addition of the Simba SQLEngine:

Custom ODBC Driver architecture


The SimbaEngine X SDK provides a similar solution for JDBC applications.

For data stores that are not SQL-capable, your custom ODBC driver is composed of the SimbaODBC component, the SQL Engine, and your DSI implementation. The Simba SQL Engine provides the SQL processing required to support ODBC interfaces.

Simba SQLEngine

The Simba SQLEngine is a self-contained SQL parser and execution engine. It consumes SQL-92 queries, parses them, creates an optimized execution plan, allows your DSI implementation to take over part or all of the execution, and then executes the plan against the DSI implementation.

Example - Build a Client/Server Solution

Once you have created a DSI implementation and built a custom driver, either for a SQL-enabled or non-SQL-enabled data store, you can rebuild your DSI implementation into a client/server solution. You can do this without making any changes to the code - simply link your DSI implementation to the Simba Server to provide remote data access:

Client Server architecture

The following sections describe the components shown in the above diagram.

Simba Client/Server protocol

The Simba Client/Server protocol is a network protocol that works on any network to provide remote access to a DSI implementation. Simba Server translates the Simba Client/Server protocol to the DSI API.


  • A client/server deployment lets you locate your custom driver close to the data store, while the client applications are located with your users.
  • Both the ODBC and the JDBC client can talk to the same SimbaServer. That means you can write one custom driver, built it as a server, then use it to service SQL requests from both ODBC and JDBC applications.

SimbaClient for ODBC and Simba Client for JDBC

The ODBC and JDBC clients are shared objects provided by Simba. These clients use the Simba Client/Server protocol to handle communication between the application and Simba Server.

Related Links

Simba Engine SDK Usage Scenarios

Build a Driver in 5 Days

SimbaEngine X SDK FAQ