Menu
Simba Technologies
Simba Technologies

SimbaEngine X SDK 10.1.3
Developing Drivers for SQL-Capable Data Stores

Library Components

This section introduces the components comprising the SimbaEngine X SDK.

Note:

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

SimbaODBC (the "C++ SDK")

SimbaODBC provides a complete ODBC 3.80 interface and all of the processing required to meet the ODBC 3.80 specification. It is the connection between your custom DSI implementation and ODBC applications such as Tableau and Microsoft Excel.

Your custom ODBC driver is composed of the SimbaODBC component and your DSI implementation. The SimbaODBC component implements most of the driver functionality, including:

  • session and statement management
  • abstracting and implementing the low-level requirements of the ODBC API
  • error checking

Tip:

When changes are made to the ODBC API or the way the standard is used by applications, Simba incorporates these changes in a manner that is transparent to your DSI implementation.

For information about the SimbaEngine C++ API method calls, see the SimbaEngine C++ API Reference.

Simba OLE DB

This component is part of the C++ SDK. SimbaOLEDB provides interfaces and all the processing required to meet the OLE DB specification.  It is the connection between your custom DSI implementation and common OLE DB reporting applications such as Microsoft SQL Server Analysis Services.

SimbaJDBC (the "Java SDK")

SimbaJDBC provides complete interfaces for JDBC 4.0, JDBC 4.1, and JDBC 4.2, as well as all of the processing required to meet these specifications. It is the connection between your custom DSI implementation and common JDBC reporting applications.

For information about the SimbaEngine Java API method calls, see the SimbaEngine Java API Reference.

Simba.NET

Simba.NET provides a complete ADO.NET interface and all the processing required to meet the ADO.NET specification. It is the connection between your custom DSI implementation and common ADO.NET reporting applications such as Microsoft SQL Server Analysis Services.

The Data Store Interface (DSI)

The data store interface, or DSI, defines a generic view of an SQL database that is independent of the industry standards for data access, such as ODBC, JDBC, ADO.NET and OLE DB. The SimbaEngine X SDK translates the ODBC, JDBC, ADO.NET and OLE DB interfaces to the DSI in C++, Java, or C#. By writing code to map from the DSI to your data store, you are creating a driver that can use one of these standard interfaces.

The DSI API is object-oriented and simpler to use than the industry standard interfaces. This makes it easier to write a DSI implementation that will translate to your custom data store. Also, because the DSI API provides a consistent API whether you are implementing ODBC, JDBC, ADO.NET or OLE DB, it is easier to re-use your knowledge when creating a driver for a different industry standard.

The Data Store Interface (DSI)

The data store interface, or DSI, defines a generic view of an SQL database that is independent of the industry standards for data access, such as ODBC, JDBC, ADO.NET and OLE DB. The SimbaEngine X SDK translates the ODBC, JDBC, ADO.NET and OLE DB interfaces to the DSI in C++, Java, or C#. By writing code to map from the DSI to your data store, you are creating a driver that can use one of these standard interfaces.

Simba Client/Server

Simba Client/Server allows remote access to your data store. You link the SimbaServer component with your DSII to create a custom driver than can accept requests from SimbaClient. You deploy SimbaClient with the application to send requests to the remote driver.

SimbaServer is most frequently used as a stand-alone executable, although it can be set up as a DLL or shared object under another server.

The DSI implementation used with SimbaServer can choose to include the Simba SQLEngine. It can be written to perform a wide range of functionality including SQL query processing with Simba SQLEngine, concentrating client requests through one executable, aggregating data stores, or controlling data access through role-based permissions. There are many possibilities for using SimbaServer as an intermediate processing step in a larger system.

The SimbaServer can be written in C++, or written in Java including the JNI Server. For more information see the SimbaClient/Server Developer Guide.

SimbaClient for ODBC

SimbaClient for ODBC is an ODBC driver DLL or shared object that can connect to SimbaServer. It includes SimbaODBC and a DSI implementation that communicates via the Simba Client/Server protocol to SimbaServer. Since any SQLEngine in the stack will be on the server side, there is no need for Simba SQLEngine in this driver. This is a completely generic ODBC driver that, when queried, reports the capabilities of the database that is connected to SimbaServer.

Note:

SimbaClient for ODBC is provided by Simba, and is ready to deploy with no additional development effort required.

SimbaClient for JDBC

SimbaClient for JDBC is a JDBC driver packaged as a .jar file so you can install it in an end user’s client-side Java Run Time Environment. SimbaClient for JDBC includes the equivalent of SimbaODBC and custom Java code that communicates via the Simba Client/Server protocol with SimbaServer.

Note:

SimbaClient for JDBC is provided by Simba, and is ready to deploy with no additional development effort required.

C++ to Java Bridge (JNI DSI)

This component of the SimbaEngine X SDK allows you to write the DSII in Java, then link to SimbaODBC or SimbaServer (including Simba SQLEngine) to create an ODBC driver.

C++ to C# Bridge (CLI DSI)

This component of the SimbaEngine X SDK allows you to write the DSII in C#, then link to SimbaODBC or SimbaServer (including Simba SQLEngine) to create an ODBC driver.

Sample Drivers

The SimbaEngine X SDK includes a number of sample drivers and sample driver projects to help you get started quickly with your custom ODBC or JDBC driver. For more information on sample drivers, see Sample Drivers and Projects.

 

Related Links

SimbaEngine C++ API Reference

SimbaEngine Java API Reference

Sample Drivers and Projects

SimbaEngine X SDK FAQ