Shipping with SimbaEngine 8.0 is a newly re-written SQL execution engine. The main new features are,
The following diagram is a component view of the SimbaEngine architecture.
There are three major components of any driver built with the SimbaEngine SDK, which are:
Each of these components is briefly outlined in the sections below.
This component is responsible for taking care of the ODBC functionality for drivers built with the SimbaEngine SDK. It manages the driver, environment, connection, and statement objects along with their attributes and properties. It also handles conversions between the different data types by calling the SimbaSupport component.
This component parses the SQL commands that are passed in via SimbaODBC and translates them into an execution plan, then executes the plan against the DSII. The query is translated into an AETree (Algebraic Expression Tree) which represents the query along with its metadata. An ETree (Execution Tree) is generated from the AETree, which is optimized before being executed. If your data store is SQL capable, then the Simba SQLEngine and SimbaDSIExt components do not need to be used.
This component is the custom DSI (DataStoreInterface) implementation that interfaces with your custom data store. Any custom logic needed to talk with your data store, or further optimize queries via Collaborative Query Processing, is implemented here.
Along with these major components, there are also several smaller components:
Each of these components is briefly outlined in the sections below.
This component, the SimbaDSI (DataStoreInterface), is the framework which the Customer DSII is built on. There are interfaces for each object such as driver, environment, connection, statement, etc, however there are also partial implementations that provide most of the needed functionality for your driver. This component acts as the bridge between SimabODBC and the Customer DSII.
This component, the SimbaDSI Extensions, are further implementations of the SimbaDSI that are used with the Simba SQLEngine. If using the Simba SQLEngine, then your Customer DSII will extend this component. If your data store is SQL capable, then the SimbaDSIExt and Simba SQLEngine components do not need to be used.
This component is used for platform specific tasks such as file IO and configuration.
This component is used for data types and conversions, exceptions, and other supporting tasks.