Systems and methods for data source management

Systems and methods for data source management using custom data sources are described. The system includes a custom data source created in response to a data source request, and a number of configuration modules to handle obtaining a connection with a data source. Other embodiments are also described.

CROSS REFERENCES

This application is related to U.S. application Ser. No. 11/538,425, titled “SYSTEMS AND METHODS FOR DATA SOURCE MANAGEMENT” and U.S. application Ser. No. 11/538,428, titled “SYSTEMS AND METHODS FOR DATA SOURCE MANAGEMENT” filed on even date herewith.

TECHNICAL FIELD

Various embodiments described herein relate to computer systems, and more particularly to systems and methods for data source management.

BACKGROUND

Connecting user applications to various data sources can be a complex process. Differences between applications and between the types of data sources can make management a difficult task. A management tool may be used to control connections between a number of applications and number of data sources. Some management tools are invasive and manipulate the data on the data source or the code in the application or on an application server. Other management tools alter the SQL (Structured Query Language) code used by the application. Some other management tools do not provide extensible configurations to allow additional management options or compatibility with various applications or types of data sources. Some management tools do not provide a system for managing data sources that is transparent to a user or vendor application. Requiring changes in the code, whether it be the SQL, or the programming in the application or on the application server is invasive and not always simple to implement. Also, there is little benefit in having a management tool that is not compatible with all the applications or data sources on the network.

SUMMARY

Systems and methods for data source management using custom data sources are described. The system includes a custom data source created in response to a data source request, and a number of configuration modules to handle obtaining a connection with a data source. Other embodiments are also described.

DETAILED DESCRIPTION

The following detailed description is divided into four sections. The first section presents a system overview of the inventive subject matter. The second section provides methods of using example embodiments of the inventive subject matter. The third section describes example implementations. The fourth section describes the hardware and the operating environment in conjunction with which embodiments can be practiced.

System Overview

FIG. 1comprises a block diagram of a system100for data source management. The system100comprises inputs102, processing subsystem104, and outputs106.

The inputs102may include data source lookup requests, data source connection requests or other related requests. The requests may include other information including the source of the request, priority, security, or other information relevant to accessing data.

The processing subsystem104receives the inputs102and performs a function based upon its configuration. If the input102is a lookup request for a data source, the processing subsystem104will check through its configuration and look for the particular requested data source. If the data source is found, a positive response will be an output106. If a data source cannot be found, the response at the output106will be in the negative.

If an input102is a request for a connection to a data source, the processing subsystem104will check through its configuration to determine the procedure for handling and obtaining a connection to the requested data source. The procedure may employ a number of steps utilizing inputs102and outputs106to perform functions including connection and availability status checks for example. At the end of the procedure, a determination is made whether the data source is available and a connection is possible. If the data source is available, the output106is a grant of the connection to the data source. If the data source is not available, the procedure may output a denial of the connection to the data source, an error, or may determine an alternate data source to grant a connection.

Embodiments of system100for managing data handle various requests to access data sources, and manage the connections according to various configurations.

FIG. 2is a block diagram of a system200for managing data according to various embodiments. The system200comprises an application202, a server204, a custom data source206, a primary data source208, and one or more alternate data sources210.

The application202sends a request to the server204. The request is in regard to a primary data source208. When the request regarding the primary data source208reaches the server, a custom data source206may be created dynamically in response to the request. Alternatively, the custom data source206may be pre-existent at the time of the request. The server handles the request to direct a connection between the application202and a primary data source208or an alternate data source210. Rather than creating a direct connection between the application202and the primary data source208, the application202is connected to the custom data source206.

The custom data source206responds to the request for the primary data source208. As mentioned above the custom data source206may be dynamically created or pre-existing. A dynamically created custom data source206is created with a configuration based on the request from the application202. The specific data source request, the requestor's identity, or other information in the request may influence the configuration of the custom data source206. For example, a particular requested data source may require load balancing or some other routine, and that would be reflected in the configuration of the custom data source206. The custom data source206may also be pre-existing, in which case it would have a preset configuration that would determine how data source connection requests would be handled.

The custom data source206additionally checks to determine the availability of the primary data source208that was requested. According to various embodiments, a data source is available if it can accept a connection in accordance with any present rules or configurations which could impede connectivity. These rules or configurations may include but are not limited to load balancing, fail-over, throttle management, or others. For example, a data source may be physically able to accept a connection, but a particular rule or configuration may deem it unavailable. If the primary data source208is available, the custom data source206may grant a connection between the application202and the primary data source208. If the primary data source208is not available, the custom data source206may refer to its configuration to determine an alternate data source210to check for availability. Once an available alternate data source210is determined, the custom data source206may then grant a connection between the application202and the alternate data source210.

The primary data source208may be associated with one or more alternate data sources210in a number of ways. The primary data source208may use one-way replication, in which case an alternate data source210acts as a backup to the primary data source208. Alternatively, the data sources may be two-way replication data sources, in which case, neither data source is secondary to the other, and modifications to the data in either data source are updated in the other. These are just two examples of many possible relationships between the primary data source208and alternate data sources210. Any number of alternate data sources may exist with respect to the primary data source208or other alternate data sources210.

FIG. 3is a more detailed block diagram of the server204and the custom data source206ofFIG. 2according to various embodiments.FIG. 3comprises a server204, lookup module302, connection module308, factory304, custom data source206and several configuration modules306a-f.

Server204will generally receive a lookup request from a requestor regarding a particular data source. The lookup request is processed by a lookup module302. The lookup module302may contain a listing of existing data sources that the server204is in communication with or may be connected to. The lookup module302may contain a particular name or directory service. Example name services may include but are not limited to JNDI (Java Naming and Directory Interface). The lookup module302will use the name or directory service to determine if the requested data source exists. The result is communicated back to the requestor.

If the lookup module302determines that the data source is in its listing, then the factory initiates the creation of a custom data source206based on the requested data source. The custom data source206may be created with a configuration customized for the requested data source. This configuration might contain a number of arrangements of various configuration modules306. The configuration modules306help manage a connection to the requested data source.

After the lookup module302communicates back to the requestor that the data source exists in its directory, the requestor may make a request for a connection to the data source. The server204receives the request for a connection at the connection module308. The connection module308provides a connection between the requestor and the requested data source. In this case, the custom data source206takes the place of the requested data source. The custom data source206steps in to manage the connection. The configuration modules306a-fhandle the process of obtaining a data source connection. A load balance configuration module306amay be for example a module to provide load balancing for a particular data source. Multiple mirrored versions of a particular data source may exist, and the load balance configuration module306amay distribute connection among the various data source mirrors. Additionally, a fail over configuration module306dmay handle determining where a connection should be redirected to when another data source connection fails. Various other configuration modules306a-fincluding a throttle management module306bor other data source connection control may be implemented in the custom data source206as well.

Once the custom data source206runs through the configuration modules306a-f, a connection with the requested data source, or an associated data source (i.e. a mirror, or backup) may be obtained. Once the custom data source206has that connection, data source access may be granted to the requestor. The custom data source206takes the connection with the other data source and wraps it in the current connection with the requestor. This allows the presence of the custom data source to be transparent to the requestor. While the requestor is connected to the requested data source or one associated with the requested data source, the custom data source may wait inactive, and allow the connection to proceed. When the requestor is finished accessing the requested data source (or an associated one), the custom data source206may step in to close the connection with the data source and with the requestor. This allows the custom data source206to update internal information used by the rules or configurations described above.

Methods

In this section, particular methods of example embodiments are described by reference to a series of flow charts. The methods to be performed may constitute computer programs made up of computer-executable instructions.

FIG. 4is a simple flow diagram illustrating a method400according to various embodiments. The method400begins with a request from a requestor for a data source (block402). In one embodiment, a subsystem for detecting the request may include the factory304shown inFIG. 3. Once received, a custom data source responds to the request and a connection may be formed with the requestor (block404). The response by a custom data source takes the place of a response by the requested data source. After the custom data source responds to the request, a determination is made as to whether the requested data source is available (block406). An available data source is a data source that is open for new connections. Factors which may influence the availability of a data source include, but are not limited to, load balancing, throttle management, status on the network, operational status, or other factors.

If the data source is determined not to be available, then an associated alternate data source may be considered (block408). An alternate data source may be associated with the requested data source in a number of ways, and will be able to fulfill the request for the originally requested data source. Once a particular alternate data source is determined for consideration, another determination of availability is made (block406). If the alternate data source is not available, a further alternate data source may be considered (block408). This process may repeat until there are no further associated alternate data sources to consider, or it is determined that one is available (clock406).

If a particular data source is determined to be available, a connection with that data source may be made (block410). The custom data source creates a connection with the available data source, and wraps that connection in its already existing connection with the requestor in order to allow the requestor to be connected with the available data source (block412). Wrapping the connection with the available data source in the existing connection between the custom data source and the requestor allows the transition to be seamless and transparent to the requestor. Additionally, the operations performed by the custom data source may be performed by any subsystem with data source management capabilities.

FIG. 5is a flow diagram illustrating method500according to various embodiments. The method500begins with a data source request by a requestor (block502). In response to receiving the request at a server, a custom data source is generated (block504). The custom data source is generated with a configuration which may be tailored to the specific requested data source. The requestor is then connected to the custom data source (block506). The configuration of the custom data source includes one or more modules which are used to facilitate and manage a connection with the requested data source or an associated data source. The modules are applied to provide management functions such as load balancing, throttle management, fail-over routines, or other functions (block508). The application of these modules allows the custom data source to determine if the requested data source is available, and if not whether an associated data source is available as an alternative.

Once an available data source is determined, the custom data source may connect with the available data source (block510). Next, the requestor is granted a connection with that available data source (block512). The connection may be wrapped in the already existing connection between the custom data source and the requestor in order to make the handoff transparent to the requestor. Once the requestor is granted a connection with the available data source, activity on the available data source may commence (block514). When the requestor is finished with its activity on the available data source, the custom data source may close the connection with the requestor and the connection with the available data source (block516).

Example Implementations

Various examples of systems and methods for example embodiments of the inventive subject matter have been described above.

FIG. 6is an example implementation of a system600according to various embodiments.FIG. 6comprises an application602, an application server604including a JNDI (Java Naming and Directory Interface) API (Application programming interface)606and a JDBC (Java Database Connectivity) API610, a factory module608, a custom data source612, a primary data source614, and one or more alternate data sources616.

The application602includes software which utilizes data stored remotely from the application602. In order for the application602to retrieve certain data, it issues a data source lookup request to the application server604. In one embodiment, the application server604may be a WebSphere application server. According to some embodiments, application server604is a J2EE (Java 2, Enterprise Edition) server, it uses the JNDI API606for directory services. When the JNDI lookup is performed, the factory module608generates a custom data source612to take the place of the primary data source614which was the subject of the lookup request. Upon receiving a positive response to the lookup request, the application602may request a connection with the data source that was the subject of the lookup request. The request is sent to the application server604, and directed toward the JDBC API610to provide access to the data source. Because the custom data source612takes the place of the identifier for the requested data source, the JDBC API610enables a connection between the application602and the custom data source612.

The custom data source612is configured to handle access management for the requested data source. This configuration may include subsystems or algorithms to provide for fail-over routines, load balancing, throttle management, or other functions. Additionally, the configuration of the custom data source612may be designed to interact with various external modules that provide functions like those just mentioned, such as throttle management. The custom data source612will use its configuration to determine whether a primary data source614to fulfill the request from the application602is available.

If available, the custom data source612makes a connection with the primary data source614. The connection with the primary data source614will be wrapped in the already existing connection between the custom data source612and the application602. The handoff of the primary data source614between the custom data source612and the application602will be transparent to the application602, and there is no noticeable change in its connection status.

If the primary data source614is determined to not be available by the custom data source612, then the configuration of the custom data source612may indicate one or more alternate data sources616. Access to the alternate data sources616will be determined by the configuration of the custom data source612in the same way that the availability of the primary data source614was determined. If a particular alternate data source616is deemed available, the custom data source612connects and handoffs in a similar fashion as it would do with the primary data source614.

Hardware and Operating Environment

This section provides an overview of an example hardware and the operating environments in conjunction with which embodiments of the inventive subject matter can be implemented.

A software program may be launched from a computer-readable medium in a computer-based system to execute functions defined in the software program. Various programming languages may be employed to create software programs designed to implement and perform the methods disclosed herein. The programs may be structured in an object-orientated format using an object-oriented language such as Java or C++. Alternatively, the programs may be structured in a procedure-orientated format using a procedural language, such as assembly or C. The software components may communicate using a number of mechanisms well known to those skilled in the art, such as application program interfaces or inter-process communication techniques, including remote procedure calls. The teachings of various embodiments are not limited to any particular programming language or environment. Thus, other embodiments may be realized, as discussed regardingFIG. 7below.

FIG. 7is a block diagram of an article700according to various embodiments of the invention. Such embodiments may comprise a computer, a memory system, a magnetic or optical disk, some other storage device, or any type of electronic device or system. The article700may include one or more processor(s)702coupled to a machine-accessible medium such as a memory704(e.g., a memory including electrical, optical, or electromagnetic elements). The medium may contain associated information706(e.g., computer program instructions, data, or both), which, when accessed, results in a machine (e.g., the processor(s)702) performing the activities previously described herein.

Implementing the apparatus, systems, subsystems and methods disclosed herein may permit transparent configurable and extensible management of data source connections between various types of applications and various data sources.