Managing connection pools for cloud-based applications that access a database

By establishing and managing connection pools for cloud-based applications, the problems of frequent database connection overhead and resource contention are solved, enabling efficient and scalable database access.

CN122249792APending Publication Date: 2026-06-19INTERNATIONAL BUSINESS MACHINE CORPORATION

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
INTERNATIONAL BUSINESS MACHINE CORPORATION
Filing Date
2024-07-29
Publication Date
2026-06-19

AI Technical Summary

Technical Problem

In existing technologies, frequent connection and disconnection of database connections by applications result in high overhead, and resource contention and connection conflicts are prone to occur when multiple applications share a connection proxy, affecting performance and scalability.

Method used

By establishing connection pools with multiple databases, connection requests from multiple cloud-based applications are received, allocated based on connection pool parameters, connection usage is monitored, and connection pool parameters are updated to optimize resource allocation and performance.

Benefits of technology

This reduces the number of times database connections are opened and closed, improves the efficiency and performance of the computing system, avoids resource contention, and ensures efficient access under different database usage requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122249792A_ABST
    Figure CN122249792A_ABST
Patent Text Reader

Abstract

A method is provided for managing connection pools for cloud-based applications accessing databases. Aspects include establishing multiple connections to one or more databases, receiving connection requests for accessing the one or more databases from multiple cloud-based applications, and distributing the connection requests among the multiple connections, wherein the distribution is determined at least in part based on one or more connection pool parameters. Aspects also include monitoring the usage of multiple connections by multiple applications, and updating one or more connection pool parameters based on analysis of the usage of multiple connections by multiple applications.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] This disclosure generally relates to managing access to databases, and more specifically, to methods and systems for managing connection pools of cloud-based applications that access databases.

[0002] Applications frequently connect to and retrieve information from various databases. Traditionally, an application establishes a connection to a database, sends queries, receives the desired data, and then closes the connection. This process of opening and closing database connections for each transaction represents a significant overhead for applications retrieving data from databases.

[0003] To reduce the overhead of opening and closing connections between the application and the database, a connection broker on the application server is used to maintain one or more database connections used by the application on demand. Typically, by using a connection broker, applications can maintain high levels of performance and scalability even under heavy loads because it eliminates the overhead of opening and closing database connections for each transaction.

[0004] In some cases, if multiple applications on the same application server use the same database with similar connection requirements, a connection proxy can be shared among them. However, if applications have different database requirements or usage patterns, it is currently necessary to maintain a separate connection proxy to avoid resource contention and optimize performance. Furthermore, sharing a connection proxy among multiple applications may increase the risk of connection conflicts, where multiple applications attempt to access the same connection simultaneously. Summary of the Invention

[0005] Embodiments of this disclosure relate to a computer-implemented method for managing connection pools of cloud-based applications accessing databases. According to one aspect, a computer-implemented method includes: establishing multiple connections to one or more databases; receiving connection requests from multiple cloud-based applications to access the one or more databases; and allocating the connection requests among the multiple connections, wherein the allocation is determined at least in part based on one or more connection pool parameters. The method further includes: monitoring usage of the multiple connections by the multiple applications; and updating the one or more connection pool parameters based on analysis of the usage of the multiple connections by the multiple applications.

[0006] The embodiments also include computer systems and computer program products for managing connection pools of cloud-based applications that access the database.

[0007] Additional technical features and benefits are achieved through the technology disclosed herein. Various embodiments and aspects of this disclosure are described in detail herein and are considered part of the claimed subject matter. For a better understanding, reference is made to the detailed description and accompanying drawings. Attached Figure Description

[0008] The specific details of the proprietary rights described herein are specifically pointed out and clearly claimed in the claims at the end of the specification. The foregoing and other features and advantages of the embodiments of this disclosure will become apparent from the following detailed description taken in conjunction with the accompanying drawings, wherein: Figure 1 A block diagram is depicted for use in conjunction with one or more embodiments of the present disclosure; Figure 2 A block diagram of a system for managing connection pools of cloud-based applications accessing databases, according to one or more embodiments of the present disclosure, is depicted. Figure 3A A connection pool queue according to an embodiment of the present disclosure is described; Figure 3B The statement pool queue and result pool queue according to embodiments of the present disclosure are described; and Figure 4 A flowchart is depicted illustrating a method for managing connection pools of cloud-based applications accessing databases, according to one or more embodiments of the present disclosure. Detailed Implementation

[0009] Embodiments of this disclosure relate to a computer-implemented method for managing connection pools of cloud-based applications accessing databases. According to one aspect, a computer-implemented method includes: establishing multiple connections to one or more databases; receiving connection requests for accessing the one or more databases from multiple cloud-based applications; and allocating the connection requests among the multiple connections, wherein the allocation is determined at least in part based on one or more connection pool parameters. The method further includes: monitoring usage of the multiple connections by the multiple applications; and updating one or more connection pool parameters based on analysis of the usage of the multiple connections by the multiple applications.

[0010] One technical benefit of this method for managing connection pools for cloud-based applications accessing databases is that cloud-based applications can access databases faster by not having to open new database connections. Furthermore, the efficiency of the computing system is improved by reducing the number of times connections to the database are opened and closed. Further technical benefits include improved operation of the computing system by modifying the allocation of database connections based on monitored usage of multiple connections by multiple cloud-based applications.

[0011] Additionally or alternatively, in embodiments of the invention, monitoring the use of multiple connections by multiple cloud-based applications includes storing connection parameters of the multiple connections to one or more databases in a connection activity knowledge database. The technical advantage of storing connection parameters of the multiple connections to one or more databases in the connection activity knowledge database is that the database will include connection parameters of the multiple connections to one or more databases, which can be used to improve the operation of the computing system by determining when to open and close database connections.

[0012] Alternatively or additionally, in embodiments of the invention, monitoring the use of multiple connections by multiple cloud-based applications includes storing data about connection requests received from each of the multiple cloud-based applications in a connection activity knowledge database. The technical advantage of storing data about connection requests received from each of the multiple cloud-based applications in the connection activity knowledge database is that the database will include historical connection requests received for each of the multiple connections, which can be used to improve the operation of the computing system by modifying the allocation of database connections.

[0013] Additionally or alternatively, in embodiments of the invention, the connection pool parameters include load balancing data that defines the maximum allocation of each cloud-based application among the multiple cloud-based applications corresponding to each of the multiple connections. The technical advantage of including load balancing data in the connection pool parameters, defining the maximum allocation of each cloud-based application among the multiple cloud-based applications corresponding to each of the multiple connections, is that the connection pool parameters are used to improve the operation of the computing system by appropriately allocating database connections among the multiple cloud-based applications.

[0014] Additionally or alternatively, in embodiments of the invention, the connection pool parameters include the number of multiple connections to each database in one or more databases and a connection timeout setting for each of the multiple connections to each database in one or more databases. The technical advantage of including the number of multiple connections to each database in one or more databases and the connection timeout setting for each of the multiple connections to each database in one or more databases is that it improves the operation of the computing system by determining when to open and close database connections.

[0015] Additionally or alternatively, in embodiments of the invention, updating one or more connection pool parameters includes one or more of the following: increasing the number of multiple connections to one or more databases; decreasing the number of multiple connections to one or more databases; and modifying the load balancing data for one or more of the multiple connections. The technical benefit of updating one or more connection pool parameters by increasing or decreasing the number of multiple connections to one or more databases is that it improves the efficiency and throughput of the computing system by maintaining an appropriate number of open database connections to provide timely service to multiple cloud-based applications.

[0016] The embodiments also include computer systems and computer program products for managing connection pools of cloud-based applications that access the database.

[0017] As mentioned above, when applications have different database usage requirements or patterns, separate connection pools are currently needed to avoid resource contention and optimize performance. Furthermore, as applications migrate to the cloud, there are no longer application servers with a central connection pool component. Instead, connection requests from applications are sent directly to the database.

[0018] In an exemplary embodiment, a connection pool is provided for cloud-based applications accessing databases. In this exemplary embodiment, the connection pool is configured to receive database connection requests from multiple cloud-based applications and maintain one or more connections to one or more databases. The connection pool is configured to distribute one or more connections to one or more databases among the multiple cloud-based applications based on one or more connection pool parameters.

[0019] In an exemplary embodiment, the connection pool is configured to monitor and analyze database access requests received from each cloud-based application and the utilization of one or more connections to one or more databases. Based on the analysis of this data, the connection pool is configured to create and modify connection pool parameters. In an exemplary embodiment, the connection pool parameters include the number of multiple connections to each of the one or more databases and a connection timeout setting for each of the multiple connections to each of the one or more databases. Furthermore, the connection pool parameters include load balancing data that defines the maximum allocation for each of the multiple cloud-based applications corresponding to each of the multiple connections. As the usage patterns of the cloud-based applications change, the connection pool is configured to modify the connection pool parameters to avoid resource contention, optimize the utilization of one or more connections to one or more databases, and optimize the database access performance provided to multiple cloud-based applications.

[0020] Various aspects of this disclosure are described by narrative text, flowcharts, block diagrams of computer systems, and / or block diagrams of machine logic included in embodiments of a computer program product (CPP). With respect to any flowchart, depending on the technology involved, operations may be performed in a different order than that shown in a given flowchart. For example, again depending on the technology involved, two operations shown in consecutive flowchart blocks may be performed in reverse order, as a single integrated step, in parallel, or in a manner that at least partially overlaps in time.

[0021] Computer program product embodiment (“CPP embodiment” or “CPP”) is a term used in this disclosure to describe any collection of one or more storage media (also referred to as “media”) collectively included in a collection of one or more storage devices that collectively include machine-readable code corresponding to instructions and / or data for performing computer operations specified in a given CPP claim. A “storage device” is any tangible device capable of holding and storing instructions used by a computer processor. Without limitation, a computer-readable storage medium can be an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these media include: magnetic disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disc (DVD), memory sticks, floppy disks, mechanical encoding devices (such as punch cards or pits / platforms formed in the main surface of the disk), or any suitable combination of the foregoing. As used in this disclosure, computer-readable storage medium should not be construed as storing transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides, optical pulses transmitted through optical fibers, electrical signals transmitted through wires, and / or other transmission media. As those skilled in the art will understand, data is typically moved at certain incidental points in time during the normal operation of the storage device, such as during access, defragmentation, or garbage collection; however, this does not render the storage device transient, as the data is not transient when it is stored.

[0022] The computing environment 100 includes examples of environments for executing at least some of the computer code involved in performing the methods of the present invention, such as connection pools (block 150) for managing cloud-based applications accessing databases. In addition to block 150, the computing environment 100 also includes, for example, a computer 101, a wide area network (WAN) 102, an end-user device (EUD) 103, a remote server 104, a public cloud 105, and a private cloud 106. In this embodiment, the computer 101 includes a processor group 110 (including processing circuitry 120 and a cache 121), a communication infrastructure 111, volatile memory 112, persistent storage device 113 (including an operating system 122 and block 150, as described above), a peripheral device group 114 (including a user interface (UI) device group 123, a storage device 124, and an Internet of Things (IoT) sensor group 125), and a network module 115. The remote server 104 includes a remote database 132. The public cloud 105 includes a gateway 130, a cloud orchestration module 131, a host physical unit 142, a virtual machine group 143, and a container group 144.

[0023] Computer 101 can take the form of a desktop computer, laptop computer, tablet computer, smartphone, smartwatch or other wearable computer, mainframe computer, quantum computer, or any other form of computer or mobile device now known or to be developed in the future capable of running programs, accessing networks, or querying databases such as remote database 132. As is well known in the field of computer technology, and depending on that technology, the execution of computer-implemented methods can be distributed among multiple computers and / or multiple locations. On the other hand, in this presentation of computing environment 100, detailed discussion focuses on a single computer, specifically computer 101, to keep the presentation as simple as possible. Computer 101 can reside in the cloud, even if it is... Figure 1 It is not shown in the cloud. On the other hand, computer 101 does not need to be in the cloud unless it can be definitively indicated to any extent.

[0024] Processor group 110 includes one or more computer processors of any type now known or to be developed in the future. Processing circuitry 120 may be distributed across multiple packages, such as multiple cooperating integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and / or multiple processor cores. Cache 121 is memory located within the processor chip package and is typically used for data or code that should be readily accessible by the threads or cores running on processor group 110. Cache memory is typically organized into multiple levels based on its relative proximity to the processing circuitry. Alternatively, some or all of the cache in the processor group may be located “off-chip.” In some computing environments, processor group 110 may be designed to work with qubits and perform quantum computing.

[0025] Computer-readable program instructions are typically loaded onto computer 101 to cause the processor assembly 110 of computer 101 to perform a series of operational steps, thereby implementing a computer-implemented method, such that the instructions thus executed instantiate the method specified in the flowcharts and / or descriptive descriptions of the computer-implemented method included in this document (collectively referred to as the "method of the invention"). These computer-readable program instructions are stored in various types of computer-readable storage media, such as cache 121 and other storage media discussed below. The program instructions and associated data are accessed by processor assembly 110 to control and direct the execution of the method of the invention. In computing environment 100, at least some of the instructions for performing the method of the invention may be stored in block 150 of persistent storage device 113.

[0026] Communication structure 111 is a signal transmission path that allows the various components of computer 101 to communicate with each other. Typically, this structure consists of switches and conductive paths, such as switches and conductive paths that form buses, bridges, physical input / output ports, etc. Other types of signal communication paths can be used, such as fiber optic communication paths and / or wireless communication paths.

[0027] Volatile memory 112 is any type of volatile memory now known or to be developed in the future. Examples include dynamic random access memory (RAM) or static RAM. Typically, volatile memory is characterized by random access, but this is not required unless explicitly indicated. In computer 101, volatile memory 112 is located in a single package and is internal to computer 101; however, alternatively or additionally, volatile memory may be distributed across multiple packages and / or located externally relative to computer 101.

[0028] The persistent storage device 113 is any form of non-volatile storage device for a computer, now known or to be developed in the future. The non-volatility of this storage device means that the stored data is retained regardless of whether power is supplied to the computer 101 and / or directly to the persistent storage device 113. The persistent storage device 113 may be a read-only memory (ROM), but typically at least a portion of the persistent storage device allows for data writing, data deletion, and data rewriting. Some common forms of persistent storage devices include hard disks and solid-state storage devices. The operating system 122 may take several forms, such as various known proprietary operating systems or operating systems employing an open-source portable operating system interface type with a kernel. The code included in block 150 generally includes at least some of the computer code involved in performing the methods of the present invention.

[0029] Peripheral device group 114 includes a group of peripheral devices for computer 101. Data communication connections between peripheral devices and other components of computer 101 can be implemented in various ways, such as Bluetooth connectivity, near field communication (NFC) connectivity, connections via cables (such as Universal Serial Bus (USB) type cables), plug-in connections (e.g., Secure Digital (SD) cards), connections via local area networks, and even connections via wide area networks such as the Internet. In various embodiments, UI device group 123 may include components such as displays, speakers, microphones, wearable devices (such as goggles and smartwatches), keyboards, mice, printers, touchpads, game controllers, and haptic devices. Storage device 124 is an external storage device, such as an external hard drive, or a pluggable storage device, such as an SD card. Storage device 124 can be persistent and / or volatile. In some embodiments, storage device 124 may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 requires substantial storage (e.g., where computer 101 locally stores and manages a large database), this storage can be provided by peripheral storage devices designed to store exceptionally large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. The IoT sensor group 125 consists of sensors that can be used in IoT applications. For example, one sensor could be a thermometer, and another sensor could be a motion detector.

[0030] Network module 115 is a collection of computer software, hardware, and firmware that allows computer 101 to communicate with other computers via WAN 102. Network module 115 may include hardware such as a modem or Wi-Fi transceiver, software for packetizing and / or depacketizing data for transmission over the communication network, and / or web browser software for transmitting data over the Internet. In some embodiments, the network control and network forwarding functions of network module 115 are performed on the same physical hardware device. In other embodiments (e.g., embodiments utilizing software-defined networking (SDN), the control and forwarding functions of network module 115 are performed on physically separate devices, such that the control function manages several different network hardware devices. Computer-readable program instructions for performing the methods of the present invention can typically be downloaded to computer 101 from an external computer or external storage device via a network adapter card or network interface included in network module 115.

[0031] WAN 102 is any wide area network (e.g., the Internet) capable of transmitting computer data over non-local distances using any technology known now or developed in the future for transmitting computer data. In some embodiments, a WAN can be replaced and / or supplemented by a local area network (LAN) (such as a Wi-Fi network) designed to transmit data between devices located in a local area. WANs and / or LANs typically include computer hardware such as copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and edge servers.

[0032] End User Equipment (EUD) 103 is any computer system used and controlled by an end user (e.g., a customer of an enterprise operating computer 101) and can take any of the forms discussed above in connection with computer 101. EUD 103 typically receives helpful and useful data from the operation of computer 101. For example, assuming computer 101 is designed to provide recommendations to the end user, these recommendations are typically transmitted from network module 115 of computer 101 to EUD 103 via WAN 102. In this way, EUD 103 can display or otherwise present the recommendations to the end user. In some embodiments, EUD 103 can be a client device, such as a thin client, a heavy client, a mainframe computer, a desktop computer, etc.

[0033] Remote server 104 is any computer system that provides at least some data and / or functionality to computer 101. Remote server 104 can be controlled and used by the same entity that operates computer 101. Remote server 104 represents a machine that collects and stores helpful and useful data used by other computers such as computer 101. For example, if computer 101 is designed and programmed to provide recommendations based on historical data, that historical data can be provided to computer 101 from a remote database 132 of remote server 104.

[0034] Public cloud 105 is any computer system that can be used by multiple entities, providing on-demand availability of computer system resources and / or other computing capabilities (particularly data storage (cloud storage) and computing power) without the need for direct, active management by users. Cloud computing typically leverages resource sharing to achieve consistency and economies of scale. Direct and active management of the computing resources of public cloud 105 is performed by the computer hardware and / or software of cloud orchestration module 131. The computing resources provided by public cloud 105 are typically implemented by virtual computing environments running on various computers constituting host physical group 142, which is the global domain of physical computers in and / or available to the public cloud 105. Virtual computing environments (VCEs) typically take the form of virtual machines from virtual machine group 143 and / or containers from container group 144. It should be understood that these VCEs can be stored as images and can be transferred between various physical machine hosts as images or after the VCEs are instantiated. Cloud orchestration module 131 manages the transfer and storage of images, deploys new instantiations of VCEs, and manages the instantiation of VCE deployment activities. Gateway 130 is a collection of computer software, hardware, and firmware that allow public cloud 105 to communicate via WAN 102.

[0035] Now, we will provide some further explanation of Virtual Computing Environments (VCEs). A VCE can be stored as an "image." New active instances of a VCE can be instantiated from this image. Two common types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to an operating system feature where the kernel allows multiple isolated user-space instances, called containers, to exist. From the perspective of programs running within them, these isolated user-space instances typically behave like real computers. Computer programs running on a regular operating system can utilize all the resources of that computer, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running within a container can only use the contents of the container and the devices allocated to the container; this is a characteristic known as containerization.

[0036] Private cloud 106 is similar to public cloud 105, except that computing resources can only be used by a single enterprise. While private cloud 106 is depicted as communicating with WAN 102, in other embodiments, private cloud may be completely disconnected from the Internet and accessible only via a local / private network. A hybrid cloud is a combination of multiple clouds of different types (e.g., private cloud, community cloud, or public cloud types) typically implemented by different vendors. Each of the multiple clouds remains a separate and discrete entity, but the larger hybrid cloud architecture is bound together by standardization or proprietary technology that enables orchestration, management, and / or data / application portability across the multiple component clouds. In this embodiment, public cloud 105 and private cloud 106 are both part of a larger hybrid cloud.

[0037] For example, one or more embodiments described herein can utilize machine learning techniques to perform prediction and / or classification tasks. In one or more embodiments, the machine learning function can be implemented using an artificial neural network (ANN) with the ability to be trained to perform the function. In machine learning and cognitive science, ANNs are a family of statistical learning models inspired by the biological neural networks of animals, and particularly the brain. ANNs can be used to estimate or approximate systems and functions that depend on a large number of inputs. Convolutional neural networks (CNNs) are a class of deep feedforward ANNs, particularly suitable for tasks such as, but not limited to, analyzing visual images and natural language processing (NLP). Recurrent neural networks (RNNs) are another class of deep feedforward ANNs, particularly suitable for tasks such as, but not limited to, unsegmented contiguous handwriting recognition and speech recognition. Other types of neural networks are also known and can be used according to one or more embodiments described herein.

[0038] An ANN can be embodied as a so-called "neuromorphic" system of interconnected processor elements that act as simulated "neurons" and exchange "messages" with each other in the form of electronic signals. Similar to the so-called "plasticity" of synaptic neurotransmitter connections carrying messages between biological neurons, the connections in an ANN carrying electronic messages between simulated neurons are assigned numerical weights corresponding to the strength or weakness of a given connection. These weights can be adjusted and tuned empirically, allowing the ANN to adapt to inputs and learn. For example, an ANN for handwriting recognition is defined by a set of input neurons that can be activated by pixels of an input image. After being weighted and transformed by a function determined by the network's designer, the activations of these input neurons are then passed to other downstream neurons, often referred to as "hidden" neurons. This process is repeated until an output neuron is activated. The activated output neuron determines which character was input.

[0039] Containers are Virtual CEs (VCEs) that utilize operating system-level virtualization. This refers to an operating system feature where the kernel allows multiple isolated user-space instances, known as containers, to exist. From the perspective of programs running within them, these isolated user-space instances typically behave like real computers. Computer programs running on a regular operating system can utilize all of that computer's resources, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running within containers can only use the contents of the container and the devices allocated to it; this is a characteristic known as containerization.

[0040] Now for reference Figure 2 This illustrates a block diagram of a system 200 for managing connection pools of cloud-based applications accessing databases, according to one or more embodiments of the present disclosure. In one embodiment, such as Figure 1 As shown, connection pool 210 can be embodied in computer 101. In another embodiment, as... Figure 1 As shown, connection pool 210 can be embodied in virtual machines hosted in public cloud 106 or private cloud 105.

[0041] As shown in the figure, system 200 includes a connection pool 210 configured to receive database access requests 201 from multiple cloud-based applications 204. Connection pool 210 is also configured to maintain one or more connections 220 with one or more databases 202. As shown, database 202 may include cloud-based databases 202-2 and 202-3, and a non-cloud-based database 202-1.

[0042] In an exemplary embodiment, connection pool 210 includes connection agent 211, connection selector 212, connection monitor 213, connection pool manager 214, connection analyzer 215, and connection activity knowledge database 216. Although illustrated as separate modules, one or more of connection agent 211, connection selector 212, connection monitor 213, connection pool manager 214, and connection analyzer 215 may be combined in various embodiments.

[0043] In an exemplary embodiment, connection monitor 213 is configured to monitor connection requests 201 received from cloud-based application 204 or a microservice 206 associated with one of the cloud-based applications 204. In an exemplary embodiment, a connection request for accessing a database may include the address of the server hosting the database, the name of the database, a username and password to be used to connect to the database, etc. Connection request 201 also includes information identifying the source of the connection request, i.e., the name and / or location of cloud-based application 204 or microservice 206. Connection monitor 213 is also configured to store the data collected from connection requests 201 and the responses provided by database 202 in a connection activity knowledge database 216.

[0044] In an exemplary embodiment, connection monitor 213 is also configured to monitor connections 220 to one or more databases. For example, connection monitor 213 may monitor the usage of connections 220 and may track the status of each connection 220, wherein the status indicates whether the connection 220 is being used, and if so, indicates the utilization level of the connection 220. In an exemplary embodiment, connection monitor 213 is also configured to monitor errors or timeouts of connections 220 to one or more databases. For example, connection monitor 213 includes a connection health threshold configuration for each connection 220, which specifies the maximum number of errors or timeouts before a connection is considered unhealthy. Connection monitor 213 is also configured to capture timestamps, application IDs, connection durations, query counts, error rates, etc., for each connection request and store them in an active knowledge database 216. In an exemplary embodiment, all data monitored by connection monitor 213 is stored in the connection activity knowledge database 216.

[0045] In an exemplary embodiment, the connectivity analyzer 215 is configured to analyze connection requests 201 received from multiple cloud-based applications 204 and responses to requests 201 from a database 202. In an exemplary embodiment, the connectivity analyzer 215 obtains data about requests 201 and associated response data from a connectivity activity knowledge database 216. In an exemplary embodiment, the connectivity analyzer 215 is configured to preprocess the data obtained from the connectivity activity knowledge database 216. Preprocessing includes cleaning the data, resolving any missing values ​​in the data, and ensuring data consistency.

[0046] Once the connection analyzer 215 has preprocessed the data, it is configured to aggregate the data. This includes grouping the data based on relevant dimensions, such as the source cloud-based application, time interval, or usage category, or grouping connections by hour or by specific query type. Based on the grouped data, the connection analyzer 215 is configured to compute one or more metrics for each data group, which may include average connection duration, average queries executed per connection, peak usage time, error rate, and connection duration distribution. In an exemplary embodiment, metrics are computed periodically, and the connection analyzer 215 is configured to identify patterns and / or trends in the computed metrics. For example, the connection analyzer 215 is configured to identify trends, anomalies, and correlations between different metrics. In one example, some tenants consistently use connections for longer durations during specific times of day. In an exemplary embodiment, the connection analyzer 215 is configured to create and adjust one or more connection pool parameters based on the identified patterns and trends. The one or more connection pool parameters are a set of rules used to distribute incoming connection requests among existing database connections. Additionally, one or more connection pool parameters can specify a connection timeout threshold for each cloud-based application based on its connection usage profile. In an exemplary embodiment, one or more connection pool parameters can specify conditions for determining when to add, restart, merge, or close connections to the database.

[0047] In an exemplary embodiment, connection proxy 211 is configured to receive connection requests. In one embodiment, connection proxy 211 includes an application programming interface (API) that accepts an incoming database connection request 201 from a cloud-based application 204. Connection proxy 211 may be configured to send a copy of the connection request data to connection analyzer 215 and connection selector 212. In an exemplary embodiment, connection selector 212 is configured to assign connection request 201 to one or more connections 220. Connection selector 212 is configured to obtain the utilization of each connection 220 from connection monitor 213 and assign connection request 201 to one or more connections 220 based at least in part on the utilization and one or more connection pool parameters. Connection pool parameters may include connection weight configuration (e.g., prioritizing certain connections based on performance or capacity) and / or load balancing algorithms (e.g., round-robin, weighted round-robin, or dynamic based on server load), which are used by connection selector 212 to assign connection request 201 to one or more connections 220.

[0048] In an exemplary embodiment, connection pool manager 214 is configured to manage connections 220 based on data obtained from connection monitor 213 and one or more connection pool parameters. In one embodiment, connection pool manager 214 is configured to provide automatic detection and configuration of database endpoints, as well as features such as connection verification and connection timeout management. Connection pool manager 214 is configured to create new connections 220 and split / merge existing connections 220 based on utilization data of existing connections obtained from connection analyzer 215. Additionally, connection pool manager 214 is configured to create and modify connection allocation algorithms (e.g., first-in-first-out, least recently used, or round-robin) used by connection selector 212 to allocate incoming requests 201. In an exemplary embodiment, connection pool manager 214 is configured to create and modify connection allocation algorithms based on data obtained from connection analyzer 215.

[0049] In an exemplary embodiment, connection pool manager 214 implements a connection pool queue for each connection 220, which manages the allocation of each connection 220 among cloud-based application 204. In one embodiment, the connection pool queue for connection 220 includes a statement pool queue for queuing queries to be sent to the database and a result pool queue for queuing results received from the database. Connection pool manager 214 specifies the size and structure (e.g., queue, stack, or mapping) of the connection pool queue for each connection and the synchronization mechanism (e.g., for each connection pool queue).

[0050] Now for reference Figure 3A The figure illustrates a connection pool queue 300 according to an embodiment of the present disclosure. As shown, the connection pool queue 300 includes a plurality of elements 302-1 and 302-2, which are collectively referred to herein as element 302. In one embodiment, the connection pool queue 300 is created and managed by a connection pool manager. In an exemplary embodiment, the connection pool queue 300 corresponds to a connection between a connection pool and a database. Elements 302 of the connection pool queue 300 are allocated by the connection pool manager to various cloud-based applications. For example, element 302-1 is allocated to a first cloud-based application, and element 302-2 is allocated to a second cloud-based application. As shown, the second cloud-based application is allocated more than twice the number of elements 302-2 as the first cloud-based application.

[0051] Now for reference Figure 3BThe figure illustrates a statement pool queue 320 and a result pool queue 330 according to embodiments of the present disclosure. As shown, the statement pool queue 320 includes multiple elements 322-1, 322-2, and 322-3, which are collectively referred to herein as element 322. Similarly, the result pool queue 330 includes multiple elements 332-1 and 332-2, which are collectively referred to herein as element 322. In one embodiment, the statement pool queue 320 and the result pool queue 330 are created and managed by a connection pool manager. In an exemplary embodiment, both the statement pool queue 320 and the result pool queue 330 correspond to connections between a connection pool and a database. In an exemplary embodiment, each element 322 in the statement pool queue 320 is assigned by the connection pool manager to a combination of a cloud-based application and a target database. Similarly, each element 332 in the result pool queue 330 is assigned by the connection pool manager to a combination of a cloud-based application and a target database.

[0052] Now for reference Figure 4 This document illustrates a flowchart of a method for managing a connection pool for a cloud-based application accessing a database, according to one or more embodiments of the present disclosure. In one embodiment, method 400 is performed by a connection pool 210 (such as...). Figure 2 The method executes (as shown in the connection pool). At block 402, method 400 establishes multiple connections to one or more databases. Next, as shown in block 404, method 400 includes receiving connection requests from multiple cloud-based applications to access one or more databases.

[0053] As shown in box 406, method 400 further includes allocating connection requests among multiple connections, wherein the allocation is determined at least in part based on one or more connection pool parameters. In an exemplary embodiment, the connection pool parameters are created and updated based on analysis of connection requests received from multiple cloud-based applications and the utilization of connections to one or more databases. In one embodiment, the connection pool parameters include the number of multiple connections to each of the one or more databases and a connection timeout setting for each of the multiple connections to each of the one or more databases. The connection pool parameters may also include load balancing data that defines the maximum allocation for each of the multiple cloud-based applications corresponding to each of the multiple connections.

[0054] As shown in box 408, method 400 includes monitoring the use of multiple connections by multiple applications. In one embodiment, monitoring the use of multiple connections by multiple cloud-based applications includes storing connection parameters of the multiple connections to one or more databases in a connection activity knowledge database. In an exemplary embodiment, monitoring the use of multiple connections by multiple cloud-based applications includes storing data about connection requests received from each of the multiple cloud-based applications in the connection activity knowledge database.

[0055] As shown in box 410, method 400 includes updating one or more connection pool parameters based on analysis of usage of multiple connections by multiple applications. In one embodiment, updating one or more connection pool parameters includes increasing the number of multiple connections to one or more databases. In another embodiment, updating one or more connection pool parameters includes decreasing the number of multiple connections to one or more databases. In yet another embodiment, updating one or more connection pool parameters includes modifying load balancing data for one or more of the multiple connections.

[0056] In an exemplary embodiment, one of the multiple connections is used by two or more cloud-based applications within a plurality of cloud-based applications, and a connection pool queue is configured to manage the use of one of the multiple connections by each of the two or more applications within the plurality of cloud-based applications. In an exemplary embodiment, the portion of the connection pool queue allocated to each of the two or more cloud-based applications within the plurality of cloud-based applications is determined based on connection pool parameters. In one example, two applications (Application A and Application B) both use a connection to a first database, and the connection pool parameters specify that Application A should be allocated twice the bandwidth of Application B. In this example, the connection pool queue is configured to allocate two out of every three elements in the queue to Application A and one out of every three elements in the queue to Application B. In an exemplary embodiment, the connection pool queue includes a statement pool queue for queuing queries to be sent to the database and a result pool queue for queuing results received from the database.

[0057] In some embodiments, the connection pool queue is dynamically managed based on real-time demands from cloud-based applications. For example, if usage from application A suddenly surges, connection pool parameters can be dynamically adjusted to ensure application A receives the required bandwidth while maintaining fair resource allocation across applications. This dynamic adjustment enhances system efficiency and responsiveness to changing workloads. Furthermore, the connection pool queue operates seamlessly with various types of databases, adapting to varying query complexities and response times. This adaptability ensures optimal performance across a wide range of cloud-based applications and databases, thereby promoting a smooth and efficient user experience.

[0058] Various embodiments are described herein with reference to the accompanying drawings. Alternative embodiments may be designed without departing from the scope of this disclosure. Various connections and positional relationships (e.g., above, below, adjacent, etc.) between elements are illustrated in the following description and drawings. Unless otherwise stated, these connections and / or positional relationships may be direct or indirect, and this disclosure is not intended to be limiting in this respect. Thus, coupling of entities may refer to direct or indirect coupling, and positional relationships between entities may be direct or indirect positional relationships. Furthermore, the various tasks and processing steps described herein may be incorporated into a more comprehensive process or handling with additional steps or functions not described in detail herein.

[0059] In one or more embodiments, one or more of the following techniques, which are well known in the art, may be used to implement one or more of the methods described herein: discrete logic circuits having logic gates for implementing logic functions on data signals, application-specific integrated circuits (ASICs) having appropriate combinational logic gates, programmable gate arrays (PGAs), field-programmable gate arrays (FPGAs), etc.

[0060] For the sake of brevity, conventional techniques related to the making and use of the aspects of this disclosure may or may not be described in detail herein. In particular, the specific computer programs and various aspects of computing systems that implement the various technical features described herein are well known. Therefore, for the sake of brevity, many conventional implementation details are only briefly mentioned or omitted entirely herein, without providing well-known system and / or processing details.

[0061] In some embodiments, various functions or actions may occur at a given location and / or in association with the operation of one or more devices or systems. In some embodiments, a portion of a given function or action may be performed at a first device or location, and the remainder of the function or action may be performed at one or more additional devices or locations.

[0062] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that, when used in this specification, the terms “comprises” and / or “comprising” specify the presence of the stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0063] All means or steps plus corresponding structures, materials, actions, and equivalents of functional elements in the following claims are intended to include any structure, material, or action for performing a function in conjunction with other claimed elements of the particular claim. This disclosure is presented for illustrative and descriptive purposes, but is not intended to be exhaustive or limited to the forms disclosed. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of this disclosure. The embodiments were chosen and described in order to best explain the principles and practical application of this disclosure, and to enable others skilled in the art to understand various embodiments of this disclosure with various modifications suitable for the intended particular purpose.

[0064] The diagrams depicted herein are illustrative. Numerous variations of the diagrams or the steps (or operations) described therein are possible without departing from the scope of this disclosure. For example, actions may be performed in a different order, or actions may be added, deleted, or modified. Furthermore, the term "coupling" describes a signal path between two elements and does not imply a direct connection between elements without any intermediate elements / connections between them. All such variations are considered part of this disclosure.

[0065] The following definitions and abbreviations are used to interpret the claims and the specification. As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” “contains,” or “containing,” or any other variations thereof, are intended to cover non-exclusive inclusion. For example, a composition, mixture, process, method, article, or apparatus that comprises a list of elements is not necessarily limited to those elements, but may include other elements not expressly listed or inherent to such composition, mixture, process, method, article, or apparatus.

[0066] Additionally, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are to be understood to include any integer greater than or equal to one, i.e., one, two, three, four, etc. The term "multiple" is to be understood to include any integer greater than or equal to two, i.e., two, three, four, five, etc. The term "connection" can include both indirect "connection" and direct "connection."

[0067] The terms “approximately,” “basically,” “about,” and variations thereof are intended to include the degree of error associated with measuring a specific quantity based on the equipment available at the time of application submission. For example, “approximately” could include a range of ±8%, 5%, or 2% of a given value.

[0068] This disclosure can be a system, method, and / or computer program product at any possible level of technical detail integration. A computer program product may include a computer-readable storage medium (or medium) having computer-readable program instructions thereon for causing a processor to perform aspects of this disclosure.

[0069] Computer-readable storage media can be tangible devices capable of holding and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disc (DVD), memory sticks, floppy disks, mechanical encoding devices (such as punch cards or raised structures in recesses on which instructions are recorded), and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses transmitted through fiber optic cables), or electrical signals transmitted through wires.

[0070] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a suitable computing / processing device or via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network) to an external computer or external storage device. The network may include copper cables, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to a computer-readable storage medium within the suitable computing / processing device.

[0071] Computer-readable program instructions used to perform the operations of this disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​(such as Smalltalk, C++, etc.) and procedural programming languages ​​(such as the "C" programming language or similar programming languages). The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network (including a local area network (LAN) or a wide area network (WAN)) or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, to perform aspects of this disclosure, electronic circuitry, including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute the computer-readable program instructions by personalizing the electronic circuitry with state information utilizing the computer-readable program instructions.

[0072] Various aspects of the invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to various embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0073] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / actions specified in one or more blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, programmable data processing apparatus, and / or other devices to operate in a particular manner, such that the computer-readable storage medium in which the instructions are stored includes an article of writing comprising instructions for implementing aspects of the functions / actions specified in one or more blocks of a flowchart and / or block diagram.

[0074] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus or other device, perform the functions / actions specified in one or more blocks of a flowchart and / or block diagram.

[0075] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing a specified logical function(s). In some alternative implementations, the functions indicated in the blocks may occur in a non-linear order as shown in the figures. For example, two blocks shown consecutively may actually be executed substantially simultaneously, or these blocks may sometimes be executed in reverse order, depending on the functions involved. It will also be noted that each block in a block diagram and / or flowchart, and combinations of blocks in block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.

[0076] Various embodiments of this disclosure have been described for illustrative purposes, but are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein is chosen to best explain the principles of the embodiments, their practical application, or technical improvements to techniques found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A computer-implemented method for managing connection pools of cloud-based applications accessing databases, the method comprising: Establish multiple connections to one or more databases; Receive connection requests to access one or more databases from multiple cloud-based applications; The connection request is allocated among the plurality of connections, wherein the allocation is determined at least in part based on one or more connection pool parameters; Monitoring the use of the multiple cloud-based applications on the multiple connections; and The one or more connection pool parameters are updated based on the analysis of the usage of the multiple connections by the multiple cloud-based applications.

2. The computer-implemented method according to claim 1, wherein, Monitoring the use of the multiple connections by the multiple cloud-based applications includes storing connection parameters of the multiple connections to one or more databases in a connection activity knowledge database.

3. The computer-implemented method according to claim 2, wherein, Monitoring the use of the multiple cloud-based applications for the multiple connections includes storing data about connection requests received from each of the multiple cloud-based applications in a connection activity knowledge database.

4. The computer-implemented method according to any one of the preceding claims, wherein, The connection pool parameters include load balancing data, which defines the maximum allocation for each cloud-based application among the plurality of cloud-based applications corresponding to each of the plurality of connections.

5. The computer-implemented method according to claim 4, wherein, The connection pool parameters include the number of connections to each of the one or more databases and the connection timeout setting for each of the connections to each of the one or more databases.

6. The computer-implemented method according to claim 5, wherein, Updating the one or more connection pool parameters includes one or more of the following: Increase the number of connections to the one or more databases; Reduce the number of connections to the one or more databases; and Modify the load balancing data of one or more of the multiple connections.

7. The computer-implemented method according to any one of the preceding claims, wherein, One of the plurality of connections is used by two or more cloud-based applications among the plurality of cloud-based applications, and wherein the connection pool queue is configured to manage the use of the one connection among the plurality of connections by each of the two or more cloud-based applications among the plurality of cloud-based applications.

8. The computer-implemented method according to claim 7, wherein, The connection pool queue includes a statement pool queue and a result pool queue.

9. A computer program product having one or more computer-readable storage media, wherein computer-readable program code is commonly stored on the one or more computer-readable storage media, the computer-readable program code being executed by a processor of a computer system to cause the computer system to perform operations, the operations including: Establish multiple connections to one or more databases; Receive connection requests to access one or more databases from multiple cloud-based applications; The connection request is allocated among the plurality of connections, wherein the allocation is determined at least in part based on one or more connection pool parameters; Monitoring the use of the multiple cloud-based applications on the multiple connections; and The one or more connection pool parameters are updated based on the analysis of the usage of the multiple connections by the multiple cloud-based applications.

10. The computer program product according to claim 9, wherein, Monitoring the use of the multiple connections by the multiple cloud-based applications includes storing connection parameters of the multiple connections to one or more databases in a connection activity knowledge database.

11. The computer program product according to claim 10, wherein, Monitoring the use of the multiple cloud-based applications for the multiple connections includes storing data about connection requests received from each of the multiple cloud-based applications in a connection activity knowledge database.

12. The computer program product according to any one of claims 9 to 11, wherein, The connection pool parameters include load balancing data, which defines the maximum allocation for each cloud-based application among the plurality of cloud-based applications corresponding to each of the plurality of connections.

13. The computer program product according to claim 12, wherein, The connection pool parameters include the number of connections to each of the one or more databases and the connection timeout setting for each of the connections to each of the one or more databases.

14. The computer program product according to claim 13, wherein, Updating the one or more connection pool parameters includes one or more of the following: Increase the number of connections to the one or more databases; Reduce the number of connections to the one or more databases; and Modify the load balancing data of one or more of the multiple connections.

15. The computer program product according to any one of claims 9 to 14, wherein, One of the plurality of connections is used by two or more cloud-based applications among the plurality of cloud-based applications, and wherein the connection pool queue is configured to manage the use of the one connection among the plurality of connections by each of the two or more cloud-based applications among the plurality of cloud-based applications.

16. A computing system, comprising: processor; Memory coupled to the processor; as well as One or more computer-readable storage media coupled to the processor, the one or more computer-readable storage media collectively containing instructions that are executed by the processor via the memory to cause the processor to perform operations, the operations including: Establish multiple connections to one or more databases; Receive connection requests to access one or more databases from multiple cloud-based applications; The connection request is allocated among the plurality of connections, wherein the allocation is determined at least in part based on one or more connection pool parameters; Monitoring the use of the multiple cloud-based applications on the multiple connections; and The one or more connection pool parameters are updated based on the analysis of the usage of the multiple connections by the multiple cloud-based applications.

17. The computing system according to claim 16, wherein, Monitoring the use of the multiple connections by the multiple cloud-based applications includes storing connection parameters of the multiple connections to one or more databases in a connection activity knowledge database.

18. The computing system according to claim 17, wherein, Monitoring the use of the multiple cloud-based applications for the multiple connections includes storing data about connection requests received from each of the multiple cloud-based applications in a connection activity knowledge database.

19. The computing system according to any one of claims 16 to 18, wherein, The connection pool parameters include load balancing data, which defines the maximum allocation for each cloud-based application among the plurality of cloud-based applications corresponding to each of the plurality of connections.

20. The computing system according to any one of claims 16 to 19, wherein, The connection pool parameters include the number of connections to each of the one or more databases and the connection timeout setting for each of the connections to each of the one or more databases.