Shim Driver Decouples Database Drivers From Web Applications

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing database driver implementations are tightly coupled with web applications, making it difficult to test different versions of database drivers without requiring multiple versions of the application to be built and deployed, which is labor-intensive and time-consuming.

Innovation Solution

The implementation of a shim driver that decouples database drivers from web applications by providing a common interface for different database drivers, allowing them to be managed and switched without modifying the web application code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If database drivers are tightly coupled with web applications, then the application can directly access and use the database driver functionality, but it becomes difficult to test different versions of database drivers without requiring multiple versions of the application to be built and deployed

Engineering Contradiction:
ImproveAbility to test different database driver versionsVSAvoidNumber of application versions to be built and deployed
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a shim driver as an intermediary layer between the web application and the actual database driver. The shim driver implements the JDBC interface and contains logic to dynamically load and delegate calls to different vendor-specific database drivers (Oracle, MySQL, PostgreSQL, etc.). This mediator allows the application to interact with a single standardized interface while the shim handles the complexity of switching between different database driver implementations and versions.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If multiple versions of database drivers are supported, then flexibility and adaptability improve, but licensing issues and legal hurdles may arise

Engineering Contradiction:
ImproveSupport for multiple database driver versionsVSAvoidLicensing issues and legal hurdles
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The shim driver acts as a legal and technical intermediary that manages the interaction between the application and multiple database driver versions. It provides a single point of control for driver selection and version management, allowing the system to support multiple database drivers without embedding each one directly in the application. This reduces licensing complexity by centralizing driver management and enabling selective loading of only the required driver version.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Ease of operation

If database drivers are decoupled from web applications using a shim driver, then switching between driver versions becomes easier, but an additional layer of abstraction is introduced

Engineering Contradiction:
ImproveEase of switching database driver versionsVSAvoidAdditional abstraction layer
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The shim driver is designed to be universal and multi-functional, implementing the standard JDBC interface while supporting multiple vendor-specific database drivers. It provides a unified entry point for all database operations regardless of the underlying driver being used. The shim driver's loadDriver() method can dynamically load different driver implementations based on configuration, making the system adaptable to different database environments without requiring changes to the application code.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS12314733B2Systems and methods for implementing a shim database driver
Publication Date: 2025.05.27 SALESFORCE INC
  • US12314733B2 patent drawing
  • US12314733B2 patent drawing
  • US12314733B2 patent drawing

AI summary

Disclosed are some implementations of systems, apparatus, methods and computer program products for implementing a shim driver configurable to provide a database driver. A shim driver class is loaded from a class path and instantiated such that a shim driver is generated. A directory path and database driver class name are obtained from a configuration file. An application transmits a request for a database driver via an application programming interface (API) of the shim driver, where the request includes the directory path and database driver class name. The shim driver loads a database driver class identified by the database driver class name using the directory path, instantiates the database driver class such that a first database driver is generated, and provides the first database driver responsive to the request.