BACKGROUND

The present invention relates to computing, and in particular, to systems and methods for integrating databases and applications using shared memory.

Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.

For an application to access data stored in a database, a separate application server and database server are used. The application server requests data from the database through the database server. For example, transfer control protocol/Internet protocol (TCP/IP) or another networking protocol may be used to communicate between the application server and the database server. The database server retrieves the data for the application server. The application server interprets the data and transforms the data into a format that can be processed by the application.

Typically, data is represented differently in databases and applications. An application may have custom application structures and types for processing data, and the database may have different native structures and types for processing data used in the application. Typically, data is transformed as it is transferred between a database and an application.

FIG. 1shows a typical application and database. Data transferred from application101to database102is typically transformed at150before being stored in a different format in database102. Similarly, data transferred from database102to application101is transformed to a different format compatible with application101. However, such format transformations are time consuming and processor intensive. Additionally, format transformation of the data reduces data throughput and slows down the ability of the application to store and access the data it needs to function. For example, if format transformation is implemented in the application, the application may require additional processor and memory resources. This larger resource footprint will be magnified across each instance of the application, for example. Similarly, if format transformation is implemented in the database, the database may require additional processor and memory resources. For databases serving multiple applications, this larger footprint may impact the performance of multiple applications.

The present disclosure addresses these and other issues with systems and methods for integrating application server and data server processes.

SUMMARY

Embodiments of the present invention include systems and methods for integrating applications and databases. In one embodiment, the present invention includes a computer-implemented method comprising storing data in an application memory of an application operating on an application server, the application memory storing the data using an application custom data type and application custom data structure, wherein the application custom data type and the application custom data structure are custom to a plurality of applications including said application. The data is stored in a database operating on a database server, the database storing the data using the application custom data type and the application custom data structure of the application. In one embodiment, a request is sent to access the data from the application to the database. The data is retrieved from the database in response to the request in the application custom data type and the application custom data structure. In one embodiment, the data is sent from the database to a shared memory in the application custom data type and the application custom data structure and the data is retrieved by the application from the shared memory in the application custom data type and the application custom data structure.

In one embodiment, data is sent from an application and stored in a database and retrieved from the database and sent to the application in a custom application format using shared memory. In one embodiment, data is sent from an application and stored in a database and retrieved from the database and sent to the application in a custom application format using network protocols.

In one embodiment, the application comprises internal tables for storing said data, and wherein the data is stored in the database in a format compatible with the application internal tables using the application custom data type and the application custom data structure.

In one embodiment, the data is retrieved from the database, sent through the shared memory, received by the application, and operated on by the application without data type or data structure conversion.

In one embodiment, the application, the database, and the shared memory are operable on the same host computer system.

In one embodiment, the method further comprises executing a SQL statement, wherein the SQL statement operates on an internal application table and a database table, wherein the internal application table is transferred through the shared memory to the database and the SQL statement is executed by the database against both the internal application table and the database table without converting the application table or the database table.

In one embodiment, the SQL statement is a JOIN.

In one embodiment, stored data in the application memory of the application is provided as a first input to a database operation through the shared memory, and wherein second data from the database is provided as a second input to the database operation, and wherein the database executes the database operation on the data from the application memory and the second data from the database without converting the data from the application memory or the second data from the database.

In one embodiment, the database operation is a JOIN.

In one embodiment, the method further comprises transforming the data type and the data structure of said data from the application custom data type and application custom data structure to a native database data type and a native database data structure within a database process and persisting the transformed data in the native database data type and the native database data structure.

In one embodiment, the method further comprises sending the data from the application memory to the shared memory in the application custom data type and the application custom data structure and retrieving the data by the database from the shared memory in the application custom data type and the application custom data structure, and in accordance therewith, performing the step of storing the data in a database.

In one embodiment, the method further comprises performing an operation on the database, wherein the operation comprises operating on first data and second data, wherein the operation is performed on the first data and second data using the application custom data type when the first and second data both have said application custom data type.

In one embodiment, the method further comprises performing an operation on the database, wherein the operation comprises operating on first data and second data, wherein the operation is performed on the first data and second data using the application custom data structure when the first data and second data both have said application custom data structure.

In one embodiment, the method further comprises receiving a request to perform an operation on first data and second data in the database, wherein the first data is in the application custom data type and the second data is not in the application custom data type, transforming the second data to the application custom data type matching the data type of the first data, and performing the operation on the first data and second data in the application custom data type.

In one embodiment, the method further comprises receiving a request to perform an operation on first data and second data in the database, wherein the first data is in the application custom data structure and the second data is not in the application custom data structure, transforming the second data to the application custom data structure matching the data structure of the first data, and performing, in the database, the operation on the first data and second data in the application custom data structure.

In one embodiment, the present invention includes a non-transitory computer readable storage medium embodying a computer program for performing a method as described herein.

In one embodiment, the present invention includes a system comprising one or more processors, memory, and one or more executable software components, executable by said processors to perform the methods described herein. Processes according to various embodiments described herein may be implemented on one or more computers, such as server computers, for example.

The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of the present invention.

