IP Library Granted Patent US 9,274,862
Granted Patent B2
US 9,274,862 · App. 12/964,219 · Granted Mar 1, 2016

Reducing latency in performing a task among distributed systems

Inventors: Neil Hamilton Murray (Northamptonshire, GB); Simon Paul Tyler (Wiltshire, GB)
Assignee: Mimecast North America Inc.
G06F9/547G06F2209/544
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,274,862
App. No.
12/964,219
Granted
Mar 1, 2016
Kind
B2
Abstract

Among other things, at a client computer system in communication with a computer network, a request object is generated that includes logic to control the handling of requests. At least one of the requests depends on (for example, simply by being part of a sequence) a result of at least one of the other of the requests. The request object is sent to a server computer system that is in communication with the computer network. A response object is received that includes results of at least some of the requests.

Claims (33)

1. A computer-implemented method comprising

receiving at least one database request for querying information included in a database;

reducing a latency between a beginning and an end of a task, the task corresponding to the at least one database request, that is to be performed between a first system and a second system, a performance of the task involving at least two database actions, the task causing the at least two database actions to be handled by the second system, handling of a second of the at least two database actions by the second system depending on an output resulting from handling a first of the at least two database actions by the second system,

the reducing of the latency including:

forming a package to include the at least two database actions and logic executable at the second system, the logic, when executed, providing instructions to the second system on how the handling of the second database action should proceed based on the output resulting from the handling of the first database action,

wherein forming the package includes generating executable code that: (a) describes locations of servers storing particular database records relevant to the at least two database actions, and (b) enables the second system to perform the at least two database actions based on which of the servers store the respective database records, and wherein the formed package includes the executable code; and

sending the package including information about the at least two database actions and the code in a single communication over a network from the first system to the second system and receiving one or more corresponding results from the second system.

2. The method of claim 1 in which the first system comprises a client, and the second system comprises a server.

3. The method of claim 1 in which at least one of the database actions is handled by accessing a database at the second system.

4. The method of claim 1 in which the two database actions have an order in which they are to be handled.

5. The method of claim 1 in which the package comprises an object for use in an object-oriented programming system.

6. The method of claim 5 in which the object comprises a first function reference corresponding to first instructions for handling the first database action and a second function reference corresponding to second instructions for handling the second database action, each function reference identifying a function executable at the second system.

7. The method of claim 1 in which the logic is interpretable at the second system.

8. The method of claim 1 in which the one or more results are received from the second system all at once.

9. The method of claim 1 in which the one or more results are received from the second system incrementally as the database actions are handled.

10. The method of claim 1 in which handling of a second of the at least two database actions by the second system depending on an output resulting from handling a first of the at least two database actions by the second system is a dependency that comprises a sequencing.

11. The method of claim 1 in which the handling of the one database action at the second system includes primitive operations to be performed at the second system, and a database transaction may extend across two or more of the primitive operations, or across two or more packages sent to the second system, or both.

12. The method of claim 1 in which the code includes instructions for optimizing searches based on locations of records in a distributed database or data store.

13. The method of claim 1 in which the logic comprises a first reference to first instructions for handling the first database action, and a second reference to second instructions for handling the second database action.

14. The method of claim 13 in which the logic that will control the handling of the first database action comprises a call to a first function identified by the first reference and comprises processing an output of a second function identified by the second reference.

15. The method of claim 1 in which the package comprises first instructions for handling the first database action and second instructions for handling the second database action.

16. The method of claim 1 in which the logic comprises a first reference identifying a first function executable at the second system for handling the first database action and a second reference identifying a second function executable at the second system for handling the second database action.

17. The method of claim 1 in which the package further includes one or more references to data available at the second system to be used in handling the two database actions.

18. The method of claim 1 in which the package comprises a program for determining what resources are available at the second system and directing the second system to handle the two database actions in accordance with the determination, the handling of the two database actions performed without interacting with the first system.

19. The method of claim 1 in which the logic, when executed, directs the second system to not proceed with the handling of one of the two database actions based on the output from the handling of another of the two database actions.

20. The method of claim 1 in which the code provides information on which servers should be used to conduct the one or more database actions based on locations of servers that store particular records in a distributed data store.

21. A first system comprising

one or more processors configured for

receiving at least one database request for querying information included in a database;

identifying a task corresponding to the at least one database request, the task to be performed between a first system and a second system, a performance of the task involving at least two database actions to be performed by a second system, handling of a second of the at least two database actions by the second system depending on an output resulting from handling a first of the at least two database actions by the second system,

forming a package to include the at least two database actions and logic executable at the second system, the logic, when executed, providing instructions to the second system on how the handling of the second database action should proceed based on the output resulting from the handling of the first database action,

wherein forming the package includes generating executable code that: (a) describes locations of servers storing particular database records relevant to the at least two database actions, and (b) enables the second system to perform the at least two database actions based on which of the servers store the respective database records, and wherein the formed package includes the executable code; and

sending the package including information about the at least two database actions and the code in a single communication over a network from the first system to the second system and receiving one or more corresponding results from the second system.

Assignments (6)
SECURITY INTEREST Recorded May 20, 2022
From: MIMECAST NORTH AMERICA, INC.; MIMECAST SERVICES LIMITED
To: ARES CAPITAL CORPORATION
Reel/Frame 060132/0429 →
RELEASE OF SECURITY INTEREST Recorded May 19, 2022
From: JPMORGAN CHASE BANK, N.A.
To: MIMECAST SERVICES LTD.; ETORCH INC.
Reel/Frame 059962/0294 →
SECURITY AGREEMENT Recorded Jul 23, 2018
From: MIMECAST SERVICES LIMITED
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 046616/0242 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2017
From: MIMECAST NORTH AMERICA, INC.
To: MIMECAST SERVICES LTD.
Reel/Frame 042821/0798 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SOWDEN, PAUL
To: MIMECAST NORTH AMERICA INC.
Reel/Frame 038122/0111 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2011
From: MURRAY, NEIL HAMILTON; TYLER, SIMON PAUL
To: MIMECAST NORTH AMERICA INC.
Reel/Frame 025936/0975 →
Continuity (1)
Related Publication 20120151003A1 · Jun 14, 2012