# US 8,543,642 B2 · Method of optimizing data flow between a software application and a database server

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,543,642 B2
- Document ID: US8543642B2
- Status: Granted
- Kind: B2
- Application number: 12/862,962
- Filed: 2010-08-25
- Published: 2011-08-25
- Granted: 2013-09-24
- Earliest claimed: 2010-02-22
- Assignees: Data Accelerator Ltd
- Applicants: Sean Corbett; Edward Philip Edwin Elliott; Matthew Clothier
- Inventors: Sean Corbett; Edward Philip Edwin Elliott; Matthew Clothier
- Web page: https://patentgrep.com/patent/US8543642B2

## CPC

- G06F 16/2453: Query optimisation
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/24539: {using cached or materialised query results}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of optimizing the interaction between an application or database and a database server, comprising the steps of: (a) routing data between the application or database and the database server through an optimisation system; (b) the optimisation system analysing the data and applying rules to the data to speed up the interaction between the application or database and the database server.

## Claims

### Claim 1

A method, comprising:
routing data between an application or database and a database server through an optimisation system;
the optimisation system analysing the data and applying rules to the data to:
predict portions of the data the database server is likely to provide to application or database, the predicted portions based on a particular request by the application or database to the database server;
send the predicted portions of the data to the application or database in advance of the particular request for the predicted portions of the data;
satisfy the particular request with the predicted portions of the data, the satisfying occurring remote to the database server, thereby speeding up interaction between the application or database and the database server.

### Claim 2 (depends on 1)

The method of claim 1, wherein the optimisation system enables the interaction between the application/database and the database server to be sufficiently optimised to enable a practical connection to be made over a slow or high latency link such as the Internet.

### Claim 3 (depends on 1)

The method of claim 1, wherein the optimisation system reduces the amount of processing or operations to be performed by the server.

### Claim 4 (depends on 1)

The method of claim 1, wherein the optimisation system reduces the amount of data needed to pass between the client application and the database server.

### Claim 5 (depends on 1)

The method of claim 1, wherein the interaction is the flow of data, the cessation of the flow of data, obviating the need for data to flow, or managing the flow of data.

### Claim 6 (depends on 1)

The method of claim 1, wherein the database server is cloud-based, or on a local network, or on a WAN or if the DB server is local to the application.

### Claim 7 (depends on 1)

The method of claim 1, wherein the application or database is deployed, managed or updated to end-users using application virtualisation software.

### Claim 8 (depends on 1)

The method of claim 1, wherein the method allows the number of database servers, or the load on the or each database server required, to be reduced.

### Claim 9 (depends on 1)

The method of claim 1, wherein the method allows the load on the or each database server to be balanced or redirected in cases of fail-over.

### Claim 10 (depends on 1)

The method of claim 1, wherein the Optimisation system is added to an existing database client application or database server, and the structure of the tables and/or files of the database running on the database server, are each substantially unchanged by the optimisation system.

### Claim 11 (depends on 1)

The method of claim 1, wherein the optimisation system is not an integral part of the client application or the database server or bespoke coding to the client application or the database server.

### Claim 12 (depends on 1)

The method of claim 1, wherein the optimisation system changes either the application/database or the database server, but not both.

### Claim 13 (depends on 1)

The method of claim 1, wherein the optimisation system is implemented in software and includes a client application or a server application.

### Claim 14 (depends on 1)

The method of claim 1, wherein the optimisation system is implemented in software and includes a client application and a server application.

### Claim 15 (depends on 1)

The method of claim 1, wherein the optimisation system is implemented in hardware.

### Claim 16 (depends on 1)

The method of claim 1, wherein the optimisation system is located between the application/database and the database server.

### Claim 17 (depends on 1)

The method of claim 1, wherein the optimisation system is located on the application/database and/or the database server.

### Claim 18 (depends on 1)

The method of claim 1, wherein the optimisation system includes multiple instances of individual optimisation systems that each provides optimisation services.

### Claim 19 (depends on 18)

The method of claim 18, wherein the multiple instances include a chain or mesh of peers.

### Claim 20 (depends on 18)

The method of claim 18 wherein the path through the multiple instances of individual optimisation systems is variable.

### Claim 21 (depends on 18)

The method of claim 18, wherein the multiple instances of individual optimisation systems are able to communicate amongst themselves.

### Claim 22 (depends on 18)

The method of claim 18, wherein the multiple instances of individual optimisation systems share diagnostics and performance information.

### Claim 23 (depends on 18)

The method of claim 18, wherein the multiple instances of individual optimisation systems each understand where they are in the chain or mesh of peers between initiator and the server.

### Claim 24 (depends on 1)

The method of claim 1, wherein the optimisation system can dynamically determine how effective or detrimental a specific rule is and can choose to vary the applied rules to find the optimum performance enhancement.

### Claim 25 (depends on 1)

The method of claim 1, wherein the server is a SQL server.

### Claim 26 (depends on 1)

The method of claim 1, wherein the data includes DBMS requests and responses.

### Claim 27 (depends on 1)

The method of claim 1, wherein the optimisation system reduces the number of DBMS requests and/or responses.

### Claim 28 (depends on 1)

The method of claim 1, wherein the rules are accessed through a rules engine.

### Claim 29 (depends on 28)

The method of claim 28, wherein the rules engine decides when and how to apply rules.

### Claim 30 (depends on 1)

The method of claim 1, wherein the rules define caching of queries.

### Claim 31 (depends on 1)

The method of claim 1, wherein the rules define how to obtain diagnostic, performance, cached data, cachability information.

### Claim 32 (depends on 1)

The method of claim 1, wherein the rules define how to configure other rules.

### Claim 33 (depends on 1)

The method of claim 1, wherein the rules define peer to peer caching of queries.

### Claim 34 (depends on 1)

The method of claim 1, wherein the rules define compression.

### Claim 35 (depends on 1)

The method of claim 1, wherein the rules define encryption.

### Claim 36 (depends on 1)

The method of claim 1, wherein the rules define predictive pre-fetching.

### Claim 37 (depends on 1)

The method of claim 1, wherein the rules define string replacement.

### Claim 38 (depends on 1)

The method of claim 1, wherein the rules define query batching.

### Claim 39 (depends on 1)

The method of claim 1, wherein the rules define re-routing to specific database servers for load balancing or fail-over.

### Claim 40 (depends on 1)

The method of claim 1, wherein the rules define re-routing to specific network paths for speed.

### Claim 41 (depends on 1)

The method of claim 1, wherein the rules define request modification.

### Claim 42 (depends on 1)

The method of claim 1, wherein the rules pre-validate requests.

### Claim 43 (depends on 1)

The method of claim 1, wherein the rules define auditing and logging.

### Claim 44 (depends on 1)

The method of claim 1, wherein the rules automatically tune, adapt or improve.

### Claim 45 (depends on 1)

The method of claim 1, wherein the rules can be selectively enabled or disabled based on factors such as initiator and server addresses or locations, time of day, configuration, server load.

### Claim 46 (depends on 1)

The method of claim 1, wherein the rules are applied at different points in the request/response stream.

### Claim 47 (depends on 1)

The method of claim 1, wherein the rules are custom rules.

### Claim 48

A method, comprising
providing multiple software applications accessible in an application store;
routing data between one or more of the multiple software applications and a database server, via a WAN such as the Internet, and through a data optimisation system that applies rules to:
predict portions of the data the database server is likely to provide to the each software application, the predicted portions based on a particular request by the each software application to the database server;
send the predicted portions to the each software application in advance of the particular request for the predicted portions of the data;
satisfy the particular request with the predicted portions of the data, the satisfying occurring remote to the database server, thereby speeding up interaction between the each software application and the database server.

### Claim 49 (depends on 48)

The method of claim 48, wherein the software applications includes database client applications.

### Claim 50 (depends on 48)

The method of claim 48, wherein the software applications are distributed to end users' PCs.

### Claim 51 (depends on 48)

The method of claim 48, wherein the software applications are distributed to system integrators.

### Claim 52 (depends on 48)

The method of claim 48, wherein the database server is cloud-based.

### Claim 53 (depends on 48)

The method of claim 48, wherein the software applications are deployed, managed or updated to end-users using application virtualisation software.

### Claim 54

A computer system including:
a remotely accessible database server;
an application or database connected over a network to the database server; and
an optimisation system wherein the optimisation system analyses data requests from the application or database and applies rules to the data, the rules configured to:
predict portions of the data the database server is likely to provide to the application or database, the predicted portions based on a particular request by the application or database to the database server;
send the predicted portions to the application or database in advance of the particular request for the predicted portions of the data;
satisfy the particular request with the predicted portions of the data, the satisfying occurring remote to the database server, thereby speeding up interaction between the application or database and the database server.

### Claim 55

A non-transitory computer readable media storing software defining an optimisation system to optimize the flow of data between an application or database and a database server, the optimisation system analysing the data and applying rules to the data to:
predict portions of the data the database server is likely to provide to application or database, the predicted portions based on a particular request by the application or database to the database server;
send the predicted portions of the data to the application or database in advance of the particular request for the predicted portions of the data;
satisfy the particular request with the predicted portions of the data, the satisfying occurring remote to the database server, thereby speeding up interaction between the application or database and the database server.

### Claim 56

A method, comprising:
routing data between a file requestor and a file server through an optimisation system;
the optimisation system analysing the data and applying rules to the data to:
predict portions of the data the file server is likely to provide to file requestor, the predicted portions based on a particular request by the file requester to the file server;
send the predicted portions of the data to the file requester in advance of the particular request for the predicted portions of the data;
satisfy the particular request with the predicted portions of the data, the satisfying occurring remote to the file server, thereby speeding up interaction between the file requester and the file server.

### Claim 57

A method, comprising:
routing data between a web data requestor and a web server through an optimisation system;
the optimisation system analysing the data and applying rules to the data to:
predict portions of the data the web server is likely to provide to web data requestor, the predicted portions based on a particular request by the web data requester to the web server;
send the predicted portions of the data to the web data requester in advance of the particular request for the predicted portions of the data;
satisfy the particular request with the predicted portions of the data, the satisfying occurring remote to the web server, thereby speeding up interaction between the web data requester and the web server.
