Abstract: The present disclosure relates to approaches for managing integration and interaction of an application with a database. In one example, a method includes receiving, by a transceiver unit [202], a request from at least one core application [302] for interacting with a database [304]. The received request comprises a set of data associated with the at least one core application [302]. The method further includes selecting, by a selection unit [204], at least one first thread based on the received request. The at least one first thread is selected from a thread pool comprising a plurality of threads. The method includes executing, by an execution unit [206], the received request by the selected at least one first thread. Furthermore, the method includes transmitting, by the transceiver unit [202], a response from the database [304] to the at least one core application [302] utilizing the selected at least one first thread. [FIG. 4]
FORM 2
THE PATENTS ACT, 1970 (39 OF 1970) & THE PATENT RULES, 2003
COMPLETE SPECIFICATION
(See section 10 and rule 13)
“METHOD AND SYSTEM FOR MANAGING INTEGRATION AND INTERACTION OF AN APPLICATION WITH A
DATABASE”
We, Jio Platforms Limited, an Indian National, of Office - 101, Saffron, Nr. Centre Point, Panchwati 5 Rasta, Ambawadi, Ahmedabad - 380006, Gujarat, India.
The following specification particularly describes the invention and the manner in which it is to be performed.
METHOD AND SYSTEM FOR MANAGING INTEGRATION AND INTERACTION OF AN APPLICATION WITH A DATABASE
FIELD OF INVENTION
[0001] Embodiments of the present disclosure relate to approaches for managing integration and interaction of an application with a database.
BACKGROUND
[0002] The following description of the related art is intended to provide background information pertaining to the field of the disclosure. This section may include certain aspects of the art that may be related to various features of the present disclosure. However, it should be appreciated that this section is used only to enhance the understanding of the reader with respect to the present disclosure, and not as admissions of the prior art.
[0003] There are various applications in a system to serve the requirements of the users. For example, such applications, to cater to the various needs of the users, need to interact with various databases. An application may be developed for a particular database or may need to be modified to interact with a database. For this purpose, the application program developed for performing the tasks by the application may need to be modified. This process may consume time and effort. These modifications may be needed as the application needs to be written as per the requirements of the database, such as using database specific operations etc.
[0004] Thus, there exists an imperative need in the art to provide a system that can enable easy integration and interaction of applications with a database, which the present disclosure aims to address. There also exists a need for approaches that can reduce the time and efforts of the user to integrate the applications with the specific database with which the applications may need to interact.
SUMMARY
[0005] This section is provided to introduce certain aspects of the present disclosure in a simplified form that are further described below in the detailed description. This summary is not intended to identify the key features or the scope of the claimed subject matter.
[0006] An aspect of the present disclosure may relate to a method for managing integration and interaction of an application with a database. The method comprises receiving, by a transceiver unit, a request from at least one core application for interacting with a database. The received request comprises a set of data associated with the at least one core application. The method further comprises selecting, by a selection unit, at least one first thread based on the received request. The at least one first thread is selected from a thread pool comprising a plurality of threads. Furthermore, the method comprises executing, by an execution unit, the received request by the selected at least one first thread. Hereinafter, the method comprises transmitting, by the transceiver unit, a response from the database to the at least one core application utilizing the selected at least one first thread.
[0007] In an exemplary aspect of the present disclosure, the step of selecting further comprises determining, by a processing unit, utilization of a set of resources associated with each of the plurality of threads. The selected at least one first thread is selected if utilization of the set of resources is below a predefined threshold.
[0008] In an exemplary aspect of the present disclosure, the method further comprises transmitting, by the transceiver unit, the response from the database to the at least one core application utilizing at least one second thread if utilization of the set of resources is above the predefined threshold.
[0009] In an exemplary aspect of the present disclosure, the method further comprises associating, by an association unit, the selected at least one first thread and the received request to obtain an association information. The method further comprises storing, by a storage unit, the association information of the selected at least one first thread and the received request.
[0010] In an exemplary aspect of the present disclosure, during an idle period, the method further comprises maintaining, by the processing unit, using a dummy traffic, one or more connections between each of the at least one core application and the database.
[0011] In an exemplary aspect of the present disclosure, the method further comprises checking, by a health check unit, a health status of the one or more connections periodically to identify if any of the one or more connections are broken.
[0012] In an exemplary aspect of the present disclosure, the method further comprises recovering, by the health check unit, the one or more broken connections automatically.
[0013] In an exemplary aspect of the present disclosure, the method further comprises retrying, by the execution unit, execution of the received request for a predefined number of times in case of failure of execution of the received request.
[0014] In an exemplary aspect of the present disclosure, the method further comprises raising, by an alarm unit, an alarm in case of failure of execution of the received request after retrying for the predefined number of times.
[0015] Another aspect of the present disclosure may relate to a system for managing integration and interaction of an application with a database. The system comprises a transceiver unit configured to receive a request from at least one core
application for interacting with a database. The received request comprises a set of data associated with the at least one core application. The system further comprises a selection unit connected to at least the transceiver unit. The selection unit is configured to select at least one first thread based on the received request. The at least one first thread is selected from a thread pool comprising a plurality of threads. The system further comprises an execution unit connected to at least the transceiver unit and the selection unit. The execution unit configured to execute the received request by the selected at least one first thread. Further, the transceiver unit of the system is further configured to transmit a response from the database to the at least one core application utilizing the selected at least one first thread.
[0016] Yet another aspect of the present disclosure may relate to a non-transitory computer readable storage medium storing one or more instructions for managing integration and interaction of an application with a database, the instructions include executable code which, when executed by one or more units of a system cause a transceiver unit of the system to receive a request from at least one core application for interacting with a database. The received request comprises a set of data associated with the at least one core application. The instructions when executed by the system further cause a selection unit of the system, to select at least one first thread based on the received request. The at least one first thread is selected from a thread pool comprising a plurality of threads. The instructions when executed by the system further cause an execution unit of the system, to execute the received request by the selected at least one first thread. The instructions when executed by the system further cause the transceiver unit to transmit a response from the database to the at least one core application utilizing the selected at least one first thread.
OBJECTS OF THE INVENTION
[0017] Some of the objects of the present disclosure, which at least one embodiment disclosed herein satisfies are listed herein below.
[0018] It is an object of the present disclosure to provide a system that can enable easy integration and interaction of applications with a database.
[0019] It is another object of the present disclosure to provide a solution that can enable a user to integrate an application with the database by introducing minimal changes in the application program.
[0020] It is another object of the present disclosure to perform a periodic health check on the connection between the database and the application to detect a broken connection and recover the connection automatically.
[0021] It is yet another object of the present disclosure to provide a solution to select a thread from a thread pool architecture to provide a fast integration mechanism.
DESCRIPTION OF THE DRAWINGS
[0022] The accompanying drawings, which are incorporated herein, and constitute a part of this disclosure, illustrate exemplary embodiments of the disclosed methods and systems in which like reference numerals refer to the same parts throughout the different drawings. Components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Also, the embodiments shown in the figures are not to be construed as limiting the disclosure, but the possible variants of the method and system according to the disclosure are illustrated herein to highlight the advantages of the disclosure. It will be appreciated by those skilled in the art that disclosure of such drawings includes disclosure of electrical components or circuitry commonly used to implement such components.
[0023] FIG. 1 illustrates an exemplary block diagram of a computing device upon which the features of the present disclosure may be implemented in accordance with exemplary implementation of the present disclosure.
[0024] FIG. 2 illustrates an exemplary block diagram of a system for managing integration and interaction of an application with a database, in accordance with exemplary implementations of the present disclosure.
[0025] FIG. 3 illustrates a network environment implementing a system for managing integration and interaction of an application with a database, in accordance with exemplary implementations of the present disclosure.
[0026] FIG. 4 illustrates a method flow diagram for managing integration and interaction of an application with a database, in accordance with exemplary implementations of the present disclosure.
[0027] The foregoing shall be more apparent from the following more detailed description of the disclosure.
DETAILED DESCRIPTION
[0028] In the following description, for the purposes of explanation, various specific details are set forth in order to provide a thorough understanding of embodiments of the present disclosure. It will be apparent, however, that embodiments of the present disclosure may be practiced without these specific details. Several features described hereafter may each be used independently of one another or with any combination of other features. An individual feature may not address any of the problems discussed above or might address only some of the problems discussed above.
[0029] The ensuing description provides exemplary embodiments only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing an exemplary embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the disclosure as set forth.
[0030] Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, circuits, systems, processes, and other components may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail.
[0031] Also, it is noted that individual embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed but could have additional steps not included in a figure.
[0032] The word “exemplary” and/or “demonstrative” is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” and/or “demonstrative” is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms “includes,” “has,” “contains,” and other similar words are used in either the detailed
description or the claims, such terms are intended to be inclusive—in a manner similar to the term “comprising” as an open transition word—without precluding any additional or other elements.
5 [0033] As used herein, a “processing unit” or “processor” or “operating processor”
includes one or more processors, wherein processor refers to any logic circuitry for processing instructions. A processor may be a general-purpose processor, a special purpose processor, a conventional processor, a digital signal processor, a plurality of microprocessors, one or more microprocessors in association with a (Digital
10 Signal Processing) DSP core, a controller, a microcontroller, Application Specific
Integrated Circuits, Field Programmable Gate Array circuits, any other type of integrated circuits, etc. The processor may perform signal coding data processing, input/output processing, and/or any other functionality that enables the working of the system according to the present disclosure. More specifically, the processor or
15 processing unit is a hardware processor.
[0034] As used herein, “a user equipment”, “a user device”, “a smart-user-device”, “a smart-device”, “an electronic device”, “a mobile device”, “a handheld device”, “a wireless communication device”, “a mobile communication device”, “a
20 communication device” may be any electrical, electronic and/or computing device
or equipment, capable of implementing the features of the present disclosure. The user equipment/device may include, but is not limited to, a mobile phone, smart phone, laptop, a general-purpose computer, desktop, personal digital assistant, tablet computer, wearable device or any other computing device which is capable
25 of implementing the features of the present disclosure. Also, the user device may
contain at least one input means configured to receive an input from at least one of a transceiver unit, a processing unit, a storage unit, a detection unit and any other such unit(s) which are required to implement the features of the present disclosure.
30 [0035] As used herein, “storage unit” or “memory unit” refers to a machine or
computer-readable medium including any mechanism for storing information in a
9
form readable by a computer or similar machine. For example, a computer-readable
medium includes read-only memory (“ROM”), random access memory (“RAM”),
magnetic disk storage media, optical storage media, flash memory devices or other
types of machine-accessible storage media. The storage unit stores at least the data
5 that may be required by one or more units of the system to perform their respective
functions.
[0036] As used herein “interface” or “user interface” refers to a shared boundary
across which two or more separate components of a system exchange information
10 or data. The interface may also be referred to a set of rules or protocols that define
communication or interaction of one or more modules or one or more units with each other, which also includes the methods, functions, or procedures that may be called.
15 [0037] All modules, units, components used herein, unless explicitly excluded
herein, may be software modules or hardware processors, the processors being a general-purpose processor, a special purpose processor, a conventional processor, a digital signal processor (DSP), a plurality of microprocessors, one or more microprocessors in association with a DSP core, a controller, a microcontroller,
20 Application Specific Integrated Circuits (ASIC), Field Programmable Gate Array
circuits (FPGA), any other type of integrated circuits, etc.
[0038] As used herein the transceiver unit include at least one receiver and at least
one transmitter configured respectively for receiving and transmitting data, signals,
25 information or a combination thereof between units/components within the system
and/or connected with the system.
[0039] As discussed in the background section, the current known solutions have
several shortcomings. The present disclosure aims to overcome the above-
30 mentioned and other existing problems in this field of technology by providing
10
method and system of managing integration and interaction of an application with a database.
[0040] Referring to FIG. 1, an exemplary block diagram of a computing device
5 [100] upon which the features of the present disclosure may be implemented in
accordance with exemplary implementation of the present disclosure, is shown. In
an implementation, the computing device [100] may also implement a method for
managing integration and interaction of an application with a database, utilizing a
system. In another implementation, the computing device [100] itself implements
10 the method for managing integration and interaction of an application with a
database, using one or more units configured within the computing device [100], wherein said one or more units are capable of implementing the features as disclosed in the present disclosure.
15 [0041] The computing device [100] may include a bus [102] or other
communication mechanism for communicating information, and a hardware processor [104] coupled with bus [102] for processing information. The hardware processor [104] may be, for example, a general-purpose microprocessor. The computing device [100] may also include a main memory [106], such as a random
20 access memory (RAM), or other dynamic storage device, coupled to the bus [102]
for storing information and instructions to be executed by the processor [104]. The main memory [106] also may be used for storing temporary variables or other intermediate information during execution of the instructions to be executed by the processor [104]. Such instructions, when stored in non-transitory storage media
25 accessible to the processor [104], render the computing device [100] into a special-
purpose machine that is customized to perform the operations specified in the instructions. The computing device [100] further includes a read only memory (ROM) [108] or other static storage device coupled to the bus [102] for storing static information and instructions for the processor [104].
30
11
[0042] A storage device [110], such as a magnetic disk, optical disk, or solid-state
drive is provided and coupled to the bus [102] for storing information and
instructions. The computing device [100] may be coupled via the bus [102] to a
display [112], such as a cathode ray tube (CRT), Liquid crystal Display (LCD),
5 Light Emitting Diode (LED) display, Organic LED (OLED) display, etc. for
displaying information to a computer user. An input device [114], including alphanumeric and other keys, touch screen input means, etc. may be coupled to the bus [102] for communicating information and command selections to the processor [104]. Another type of user input device may be a cursor controller [116], such as a
10 mouse, a trackball, or cursor direction keys, for communicating direction
information and command selections to the processor [104], and for controlling cursor movement on the display [112]. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allow the device to specify positions in a plane.
15
[0043] The computing device [100] may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computing device [100] causes or programs the computing device [100] to be a special-purpose machine.
20 According to one implementation, the techniques herein are performed by the
computing device [100] in response to the processor [104] executing one or more sequences of one or more instructions contained in the main memory [106]. Such instructions may be read into the main memory [106] from another storage medium, such as the storage device [110]. Execution of the sequences of instructions
25 contained in the main memory [106] causes the processor [104] to perform the
process steps described herein. In alternative implementations of the present disclosure, hard-wired circuitry may be used in place of or in combination with software instructions.
30 [0044] The computing device [100] also may include a communication interface
[118] coupled to the bus [102]. The communication interface [118] provides a two-
12
way data communication coupling to a network link [120] that is connected to a
local network [122]. For example, the communication interface [118] may be an
integrated services digital network (ISDN) card, cable modem, satellite modem, or
a modem to provide a data communication connection to a corresponding type of
5 telephone line. As another example, the communication interface [118] may be a
local area network (LAN) card to provide a data communication connection to a
compatible LAN. Wireless links may also be implemented. In any such
implementation, the communication interface [118] sends and receives electrical,
electromagnetic or optical signals that carry digital data streams representing
10 various types of information.
[0045] The computing device [100] can send messages and receive data, including program code, through the network(s), the network link [120] and the communication interface [118]. In the Internet example, a server [130] might
15 transmit a requested code for an application program through the Internet [128], the
ISP [126], the local network [122], a host [124] and the communication interface [118]. The received code may be executed by the processor [104] as it is received, and/or stored in the storage device [110], or other non-volatile storage for later execution.
20
[0046] The present disclosure is implemented by a system [200] (as shown in FIG. 2). In an implementation, the system [200] may include the computing device [100] (as shown in FIG. 1). It is further noted that the computing device [100] is able to perform the steps of a method [400] (as shown in FIG. 4).
25
[0047] Referring to FIG. 2, an exemplary block diagram of a system [200] for managing integration and interaction of an application with a database in accordance with the exemplary implementations of the present disclosure, is shown.
13
[0048] Referring to FIG. 3, a network environment [300] implementing a system for managing integration and interaction of an application with the database, in accordance with exemplary implementations of the present disclosure, is shown.
5 [0049] It may be noted that the FIG. 2 and FIG. 3 have been explained
simultaneously and may be read in conjunction with each other.
[0050] As depicted in FIG. 2, the system [200] comprises at least one transceiver unit [202], at least one selection unit [204], at least one execution unit [206], at least
10 one processing unit [208], at least one association unit [210], at least one storage
unit [212], at least one health check unit [214] and at least one alarm unit [216]. Also, all of the components/ units of the system [200] are assumed to be connected to each other unless otherwise indicated below. As shown in the FIG. 2, all units shown within the system should also be assumed to be connected to each other.
15 Also, in FIG. 2, only a few units are shown, however, the system [200] may
comprise multiple such units or the system [200] may comprise any such numbers of said units, as required to implement the features of the present disclosure. Further, in an implementation, the system [200] may be present in a user device to implement the features of the present disclosure. The system [200] may be a part of
20 the user device/or may be independent of but in communication with the user device
(may also referred herein as a UE). In another implementation, the system [200] may reside in a server or a network entity. In yet another implementation, the system [200] may reside partly in the server/ network entity and partly in the user device.
25 [0051] The system [200] is configured for managing integration and interaction of
an application with a database, with the help of the interconnection between the components/units of the system [200].
[0052] In one example, a plurality of core applications [302-1], [302-2], [302-3],
30 …, [302-N] (collectively referred to core applications [302] and individually
referred to as core application [302]) may be interacting with the system [200].
14
Further, as depicted in FIG. 3, a database [304] may be in communication with the system [200]. The core applications may refer to any application or software, that may be operated by a user or a system, for interacting with the database [304], to carry out certain functionalities, such as storing, retrieving, or managing any data. 5
[0053] It may be noted that, although, the present description has been explained with respect to at least one core application [302] and FIG. 3 depicts three exemplary core applications, i.e., first core application [302-1], second core application [302-2], and third core application [302-3], it may be noted that the
10 same is done only for the sake of explanation and clarity, and not to be construed to
limit the scope of the present subject matter in any manner. The approaches of the present subject matter may be implemented to any number of core applications, and all such variations and examples would lie within the scope of the present subject matter.
15
[0054] In one example, at least one core application [302] may transmit a request to the system [200]. This has been depicted as Step 306 in FIG. 3. The request, initiated by the core application [302], may be used by the core application [302] for accessing the database [304].
20
[0055] In operation, as per the present subject matter, the transceiver unit [202] may receive a request from at least one core application [302]. The request, received from at least one core application [302], may be for interacting with the database [304]. Further, the received request may include a set of data associated with the at
25 least one core application [302], from where the request has been received. The set
of data may include an identifier of the at least one core application [302], a type of the core application [302], and the like. The set of data may identify the core application [302] that needs to be integrated with the database [304]. In one example, the request may include a set of data specific classes associated with the
30 core application [302] from which the request was received. As would be
understood, the ‘data specific classes’ received in the request from the core
15
application [302] may refer to classes or structures within the core application [302]
that may be specifically designed to handle, represent, and manipulate data stored
in the database [304]. The data specific classes, included in the request, may allow
the core application [302] to interact with the database [304]. In one example, such
5 data specific classes may map the contents of the database [304], such as tables of
database [304], in the application code of the core application [302].
[0056] Based on the received request, the selection unit [204] may select at least one first thread from a thread pool (not depicted in FIGS. 2-3). The thread pool may
10 include a plurality of threads. The thread may be referred to as sub-unit within a
processor in the operating system. The thread may use a set of computational resources assigned to a certain process, which may allow any processing task to be performed on a computing system. In the context of the present invention, a thread and its corresponding computational resources may be required by the request, so
15 that the request may be able to execute.
[0057] Further, the thread pool refers to a collection of the plurality of threads. The thread pool may be stored in the storage unit [212]. As would be understood, the thread pool may be maintained, so that multiple requests from multiple core
20 applications may be executed in a simultaneous and efficient manner, and no
congestion may be created due to slowness in any particular thread. In other words, the request which is received from at least one core application [302] are not bound to any particular thread. Instead, the request may be put by the system [200] to the thread pool, and the selection unit [204] of the system [200] may select a thread
25 based on any criteria understood to a person skilled in art.
[0058] In one example, the first thread may be selected from the thread pool based
on a determination of resource utilization associated with each of the plurality of
threads in the thread pool. The resource utilization refers to a measure of the
30 resources of a thread, utilized by the incoming requests that may be executed by
said thread. For instance, the resource utilization of one thread, say ‘thread 1’ may
16
be 40 %. This means that 40% of the resources that were available with the thread 1 are already occupied.
[0059] In the context of the present invention, in one example, for selecting the at
5 least one thread, the processing unit [208] may determine utilization of a set of
resources associated with each of the plurality of threads. In one example, the at
least one first thread may be selected if utilization of the set of resources is below a
predefined threshold. For example, if the resource utilization of the first thread is
below, say, 40%, it may be inferred that the first thread may be capable of executing
10 a request.
[0060] In one example, the predefined threshold may be determined by a user operator. In another example, the predefined threshold may be determined by the system [200].
15
[0061] In another example, if the processing unit [208] determines that the resource utilization of a thread, say the first thread, is above the predefined threshold, the selection unit [204] may select a second thread. This may indicate that the first thread is already over occupied and may not be able to take up execution of any
20 more requests. As a result, a different thread, i.e., the second thread may need to be
selected.
[0062] Continuing further, once the thread, say the first thread, has been selected,
the association unit [210] may associate the selected first thread and the received
25 request to obtain an association information. In an implementation, the association
information refers to data related to association of threads and the request. The association information may include an identifier of the association, a time stamp of the association, and the like.
30 [0063] The association information, of the selected first thread and the received
request, may then be stored by the storage unit [212].
17
[0064] It may be noted and appreciated that associating the selected thread with the
received request, and storing such association information, may allow the
approaches of the present subject matter to maintain a thread affinity for the core
5 application [302]. The thread affinity refers to sending the response, as would be
described later, from the same thread through which the request is received at the system [200]. For example, say, if a request is raised by a particular thread, say thread T1, from the application, then the response to the request returns to thread T1 only.
10
[0065] Continuing further, once the thread has been selected, say, the first thread, the execution unit [206] may then execute the received request by the selected at least one first thread. The execution of the received request may refer to the core application [302] interacting with the database. This has been depicted by Step 308
15 in FIG. 3.
[0066] In one example, the request may be successfully executed by the selected
first thread. In such cases, the core application [302] may be able to successfully
interact with the database [304]. Based on the successful execution, the transceiver
20 unit [202] may receive a response from the database [304] and transmit said
response to the core application utilizing the selected first thread.
[0067] In one example, the response may be in the form of an acknowledgement
that may be transmitted to the core application [302]. In another example, the
25 response may be in the form of a success response that may be transmitted to a user
of the core application [302].
[0068] It may be noted and appreciated that, the response may be transmitted to the core application on the same thread utilizing which the request was received. 30
18
[0069] In cases during the selection of the thread, when the second thread was selected, in such cases, the transceiver unit [202] may transmit the response from the database [304] to the core application [302] utilizing the second thread.
5 [0070] In another example, the request may fail to execute. In one example, the
failure may be due to a fluctuation in connection between the core application [302]
and the database [304]. In another example, the failure may be due to an
unresponsive database [304]. In such cases, the system [200] may receive a
response that the request has failed to execute, and such response may be
10 transmitted to the core application [302]. In another example, the response may
include a negative acknowledgement. In yet another example, the response may include a recommendation to execute the request on a different thread.
[0071] In yet another example, in case of failure of execution of the received
15 request, the execution unit [206] may retry the execution of the received request. In
one example, the execution unit [206] may retry the execution of the received
request for a predefined number of times. In another example, the execution unit
[206] may retry the execution of the received request for a predefined amount of
time. In yet another example, the execution unit [206] may retry the execution of
20 the received request till the time the request is successfully executed.
[0072] As per further implementation of the present subject matter, the system
[200] may also allow auditing and checking the health of all the connections of the
one or more core applications [302] with the database [304] during an idle period,
25 i.e., during periods where no traffic is present on the connections between the one
or more core applications and the database. In such cases, the processing unit [208] may maintain one or more connections between each of the at least one core application and the database using a dummy traffic.
19
[0073] The dummy traffic refers to system generated data packets that may be added to a network to make it look like a real traffic to identify and audit a health status of the one or more connections.
5 [0074] During such dummy traffic periods, the health check unit [214] may be
configured to check a health status of the one or more connections periodically. This
periodic health status check may be done to identify if any of the one or more
connections are broken. In one example, to periodically check the health status, the
health check unit [214] may be configured to query the one or more connections at
10 pre-defined intervals of time. The pre-defined intervals of time may be defined by
the system operator or the system [200]. For instance, the health check unit [214] may perform the health check after every 120 minutes.
[0075] As would be noted and appreciated, identification of one or more broken
15 connections may help in assessing whether the connections between the core
applications and the database were deliberately idle, or whether the core applications were unable to communicate with the database due to broken connections.
20 [0076] In another example, if the health check unit [214] identifies the one or more
connections to be in the broken condition, the health check unit [214] may recover the one or more broken connections automatically. For instance, 10 connections are established with the database [304] for serving a core application [302] and 2 connections out of 10 connections go down. Then the core application [302] may
25 not be required to perform any action. The health check unit [214] may perform the
health check periodically to see which connections are broken. The health check unit [214] is configured to re-establish the broken connections in real time without any application trigger or manual intervention.
30 [0077] Referring to FIG. 4, an exemplary method flow diagram [400] for managing
integration and interaction of an application with a database, in accordance with
20
exemplary implementations of the present disclosure is shown. In an
implementation the method [400] is performed by the system [200]. Further, in an
implementation, the system [200] may be present in a server device to implement
the features of the present disclosure. Also, as shown in FIG. 4, the method [400]
5 starts at step [402].
[0078] At step [404], the method [400] comprises receiving, by the transceiver unit
[202], a request from at least one core application [302] for interacting with the
database [304]. The received request may include a set of data associated with the
10 at least one core application [302].
[0079] In one example, a plurality of core applications [302] may be interacting
with the system [200]. In one example, at least one core application [302] may
transmit a request to the system. The request, initiated by the core application [302],
15 may be used by the core application [302] for accessing the database [304].
[0080] In operation, as per the present subject matter, the transceiver unit [202] may receive a request from at least one core application. The request, received from at least one core application [302], may be for interacting with the database [304].
20 Further, the received request may include a set of data associated with the at least
one core application [302], from where the request has been received. The set of data may include an identifier of the at least one core application [302], a type of the core application [302], and the like. The set of data may identify the core application [302] that needs to be integrated with the database [304]. In one
25 example, the request may include a set of data specific classes associated with the
core application [302] from which the request was received. As would be understood, the ‘data specific classes’ received in the request from the core application [302] may refer to classes or structures within the core application [302] that may be specifically designed to handle, represent, and manipulate data stored
30 in the database [304]. The data specific classes, included in the request, may allow
the core application [302] to interact with the database [304]. In one example, such
21
data specific classes may map the contents of the database [304], such as tables of database [304], in the application code of the core application [302].
[0081] At step [406], the method [400] comprises selecting, by the selection unit
5 [204], at least one first thread based on the received request. The at least one first
thread is selected from a thread pool. The thread pool may include a plurality of threads.
[0082] Based on the received request, the selection unit [204] may select at least
10 one first thread from a thread pool. The thread pool may include a plurality of
threads. In the context of the present invention, a thread and its corresponding computational resources may be required by the request, so that the request may be able to execute. Further, the thread pool refers to a collection of the plurality of threads. The thread pool may be stored in the storage unit [212]. 15
[0083] In one example, the first thread may be selected from the thread pool based
on a determination of resource utilization associated with each of the plurality of
threads in the thread pool. In another example, for selecting the at least one thread,
the processing unit [208] may determine utilization of a set of resources associated
20 with each of the plurality of threads. In yet another example, the at least one first
thread may be selected if utilization of the set of resources is below a predefined threshold. For example, if the resource utilization of the first thread is below, say, 40%, it may be inferred that the first thread may be capable of executing a request.
25 [0084] In one example, the predefined threshold may be determined by a user
operator. In another example, the predefined threshold may be determined by the system [200].
[0085] In another example, if the processing unit [208] determines that the resource
30 utilization of a thread, say the first thread, is above the predefined threshold, the
selection unit [204] may select a second thread. This may indicate that the first
22
thread is already over occupied and may not be able to take up execution of any more requests. As a result, a different thread, i.e., the second thread may need to be selected.
5 [0086] Continuing further, once the thread, say the first thread, has been selected,
the association unit [210] may associate the selected first thread and the received
request to obtain an association information. In an implementation, the association
information refers to data related to association of threads and the request. The
association information may include an identifier of the association, a time stamp
10 of the association, and the like.
[0087] The association information, of the selected first thread and the received request, may then be stored by the storage unit [212].
15 [0088] Further at step [408], the method [400] comprises executing, by an
execution unit [206], the received request by the selected at least one first thread.
[0089] Continuing further, once the thread has been selected, say, the first thread,
the execution unit [206] may then execute the received request by the selected at
20 least one first thread. The execution of the received request may refer to the core
application [302] interacting with the database.
[0090] Further at step [410], the method [400] comprises transmitting, by the
transceiver unit [202], a response from the database to the at least one core
25 application [302] utilizing the selected at least one first thread.
[0091] In one example, the request may be successfully executed by the selected
first thread. In such cases, the core application [302] may be able to successfully
interact with the database [304]. Based on the successful execution, the transceiver
30 unit [202] may receive a response from the database [304] and transmit said
response to the core application utilizing the selected first thread.
23
[0092] In one example, the response may be in the form of an acknowledgement
that may be transmitted to the core application [302]. In another example, the
response may be in the form of a success response that may be transmitted to a user
5 of the core application [302].
[0093] In cases during the selection of the thread, when the second thread was selected, in such cases, the transceiver unit [202] may transmit the response from the database [304] to the core application [302] utilizing the second thread.
10
[0094] In another example, the request may fail to execute. In one example, the failure may be due to a fluctuation in connection between the core application [302] and the database [304]. In another example, the failure may be due to an unresponsive database [304]. In such cases, the system [200] may receive a
15 response that the request has failed to execute, and such response may be
transmitted to the core application [302]. In another example, the response may include a negative acknowledgement. In yet another example, the response may include a recommendation to execute the request on a different thread.
20 [0095] In yet another example, in case of failure of execution of the received
request, the execution unit [206] may retry the execution of the received request. In one example, the execution unit [206] may retry the execution of the received request for a predefined number of times. In another example, the execution unit [206] may retry the execution of the received request for a predefined amount of
25 time. In yet another example, the execution unit [206] may retry the execution of
the received request till the time the request is successfully executed.
[0096] The method [400] terminates at step [412].
30 [0097] The present disclosure further discloses a non-transitory computer readable
storage medium storing one or more instructions for managing integration and
24
interaction of an application with a database, the instructions include executable
code which, when executed by one or more units of a system [200], cause a
transceiver unit [202] of the system [200] to receive a request from at least one core
application [302] for interacting with a database [304]. The received request
5 comprises a set of data associated with the at least one core application [302]. The
instructions when executed by the system [200] further cause a selection unit [204] of the system [200], to select at least one first thread based on the received request. The at least one first thread is selected from a thread pool comprising a plurality of threads. The instructions when executed by the system [200] further cause an
10 execution unit [206] of the system [200], to execute the received request by the
selected at least one first thread. The instructions when executed by the system [200] further cause the transceiver unit [202] to transmit a response from the database [304] to the at least one core application [302] utilizing the selected at least one first thread.
15
[0098] As is evident from the above, the present disclosure provides a technically advanced solution for managing integration and interaction of an application with a database. The present solution provides a system that can enable easy integration and interaction of applications with a database. The present disclosure further
20 provides a solution that can enable a user to integrate an application with the
database by introducing minimal changes in the application program. The present disclosure further performs a periodic health check on the connection between the database and the application to detect a broken connection and recover the connection automatically. The present disclosure further provides a solution to
25 select a thread from a thread pool architecture to provide a fast integration
mechanism.
[0099] While considerable emphasis has been placed herein on the disclosed
implementations, it will be appreciated that many implementations can be made and
30 that many changes can be made to the implementations without departing from the
principles of the present disclosure. These and other changes in the implementations
25
of the present disclosure will be apparent to those skilled in the art, whereby it is to be understood that the foregoing descriptive matter to be implemented is illustrative and non-limiting.
5 [0100] Further, in accordance with the present disclosure, it is to be acknowledged
that the functionality described for the various components/units can be
implemented interchangeably. While specific embodiments may disclose a
particular functionality of these units for clarity, it is recognized that various
configurations and combinations thereof are within the scope of the disclosure. The
10 functionality of specific units as disclosed in the disclosure should not be construed
as limiting the scope of the present disclosure. Consequently, alternative arrangements and substitutions of units, provided they achieve the intended functionality described herein, are considered to be encompassed within the scope of the present disclosure.
26
We Claim:
1. A method [400] for managing integration and interaction of an application
with a database [304], the method [400] comprising:
receiving [402], by a transceiver unit [202], a request from at least one core application [302] for interacting with a database [304], wherein the received request comprises a set of data associated with the at least one core application [302];
selecting [404], by a selection unit [204], at least one first thread based on the received request, wherein the at least one first thread is selected from a thread pool comprising a plurality of threads;
executing [406], by an execution unit [206], the received request by the selected at least one first thread; and
transmitting [408], by the transceiver unit [202], a response from the database [304] to the at least one core application [302] utilizing the selected at least one first thread.
2. The method [400] as claimed in claim 1, wherein the step of selecting [404] further comprises: determining, by a processing unit [208], utilization of a set of resources associated with each of the plurality of threads, and wherein the selected at least one first thread is selected if utilization of the set of resources is below a predefined threshold.
3. The method [400] as claimed in claim 2, further comprising: transmitting, by the transceiver unit [202], the response from the database [304] to the at least one core application [302] utilizing at least one second thread if utilization of the set of resources is above the predefined threshold.
4. The method [400] as claimed in claim 1, wherein the method comprising:
associating, by an association unit [210], the selected at least one first thread and the received request to obtain an association information; and
storing, by a storage unit [212], the association information of the selected at least one first thread and the received request.
5. The method [400] as claimed in claim 1, further comprising: during an idle period, maintaining, by the processing unit [208], using a dummy traffic, one or more connections between each of the at least one core application [302] and the database [304].
6. The method [400] as claimed in claim 5, further comprising: checking, by a health check unit [214], a health status of the one or more connections periodically to identify if any of the one or more connections are broken.
7. The method [400] as claimed in claim 6, further comprising recovering, by the health check unit [214], the one or more broken connections automatically.
8. The method [400] as claimed in claim 1, further comprising retrying, by the execution unit [206], execution of the received request for a predefined number of times in case of failure of execution of the received request.
9. The method [400] as claimed in claim 8, further comprising raising, by an alarm unit [216], an alarm in case of failure of execution of the received request after retrying for the predefined number of times.
10. A system [200] for managing integration and interaction of a core application with a database [304], the system [200] comprising:
a transceiver unit [202] configured to: receive a request from at least one core application [302] for interacting with a database [304], wherein the
received request comprises a set of data associated with the at least one core application [302];
a selection unit [204] connected to at least the transceiver unit [202], the selection unit [204] configured to select at least one first thread based on the received request, wherein the at least one first thread is selected from a thread pool comprising a plurality of threads;
an execution unit [206] connected to at least the transceiver unit [202] and the selection unit [204], the execution unit [206] configured to execute the received request by the selected at least one first thread; and
the transceiver unit [202] is further configured to transmit a response from the database [304] to the at least one core application [302] utilizing the selected at least one first thread.
11. The system [200] as claimed in claim 10, wherein the system further comprises a processing unit [208] configured to: determine utilization of a set of resources associated with each of the plurality of threads, and wherein the selected at least one first thread is selected if utilization of the set of resources is below a predefined threshold.
12. The system [200] as claimed in claim 11, wherein the transceiver unit [202] is further configured to transmit the response from the database [304] to the at least one core application [302] utilizing at least one second thread if utilization of the set of resources is above the predefined threshold.
13. The system [200] as claimed in claim 10, wherein the system further comprises:
an association unit [210] configured to: associate the selected at least one first thread and the received request to obtain an association information; and
a storage unit [212] configured to: store the association information of the selected at least one first thread and the received request.
14. The system [200] as claimed in claim 10, wherein the processing unit [208] is further configured to: during an idle period, maintain, using a dummy traffic, one or more connections between each of the at least one core application [302] and the database [304].
15. The system [200] as claimed in claim 14, wherein the system further comprising a health check unit [214] configured to check a health status of the one or more connections periodically to identify if any of the one or more connections are broken.
16. The system [200] as claimed in claim 15, wherein the health check unit [214] is further configured to recover the one or more broken connections automatically.
17. The system [200] as claimed in claim 10, wherein the execution unit [206] is further configured to retry execution of the received request for a predefined number of times in case of failure of execution of the received request.
18. The system [200] as claimed in claim 17, wherein the system further comprising an alarm unit [216] configured to raise an alarm in case of failure of execution of the received request after trying for the predefined number of times.
| # | Name | Date |
|---|---|---|
| 1 | 202321061423-STATEMENT OF UNDERTAKING (FORM 3) [12-09-2023(online)].pdf | 2023-09-12 |
| 2 | 202321061423-PROVISIONAL SPECIFICATION [12-09-2023(online)].pdf | 2023-09-12 |
| 3 | 202321061423-POWER OF AUTHORITY [12-09-2023(online)].pdf | 2023-09-12 |
| 4 | 202321061423-FORM 1 [12-09-2023(online)].pdf | 2023-09-12 |
| 5 | 202321061423-FIGURE OF ABSTRACT [12-09-2023(online)].pdf | 2023-09-12 |
| 6 | 202321061423-DRAWINGS [12-09-2023(online)].pdf | 2023-09-12 |
| 7 | 202321061423-Proof of Right [15-01-2024(online)].pdf | 2024-01-15 |
| 8 | 202321061423-FORM-5 [10-09-2024(online)].pdf | 2024-09-10 |
| 9 | 202321061423-ENDORSEMENT BY INVENTORS [10-09-2024(online)].pdf | 2024-09-10 |
| 10 | 202321061423-DRAWING [10-09-2024(online)].pdf | 2024-09-10 |
| 11 | 202321061423-CORRESPONDENCE-OTHERS [10-09-2024(online)].pdf | 2024-09-10 |
| 12 | 202321061423-COMPLETE SPECIFICATION [10-09-2024(online)].pdf | 2024-09-10 |
| 13 | 202321061423-Request Letter-Correspondence [16-09-2024(online)].pdf | 2024-09-16 |
| 14 | 202321061423-Power of Attorney [16-09-2024(online)].pdf | 2024-09-16 |
| 15 | 202321061423-Form 1 (Submitted on date of filing) [16-09-2024(online)].pdf | 2024-09-16 |
| 16 | 202321061423-Covering Letter [16-09-2024(online)].pdf | 2024-09-16 |
| 17 | 202321061423-CERTIFIED COPIES TRANSMISSION TO IB [16-09-2024(online)].pdf | 2024-09-16 |
| 18 | Abstract 1.jpg | 2024-10-04 |
| 19 | 202321061423-FORM 3 [07-10-2024(online)].pdf | 2024-10-07 |
| 20 | 202321061423-ORIGINAL UR 6(1A) FORM 1 & 26-090125.pdf | 2025-01-14 |