IP Library Granted Patent US 11,126,662
Granted Patent B2
US 11,126,662 · App. 16/253,404 · Granted Sep 21, 2021

Computer data distribution architecture connecting an update propagation graph through multiple remote query processors

Inventors: Ryan Caudy (New York, NY); David R. Kent, IV (Colorado Springs, CO); Charles Wright (Cortlandt Manor, NY); Brian Ries (St. Louis Park, MN); Radu Teodorescu (New York, NY)
Assignee: Deephaven Data Labs LLC
G06F16/90335G06F3/0481G06F16/128G06F16/21G06F16/221G06F16/23G06F16/235G06F16/2358G06F16/2365G06F16/2372G06F16/27G06F16/289G06F16/532G06F16/901G06F16/904G06F16/9024G06F16/9038G06T11/206G06F12/0253G06F16/489
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 11,126,662
App. No.
16/253,404
Granted
Sep 21, 2021
Kind
B2
Abstract

Described are methods, systems and computer readable media for computer data distribution architecture connecting an update propagation graph through multiple remote query processors.

Claims (79)

1. A method comprising:

assigning a first sub-graph of a query graph to a first query processor;

assigning a second sub-graph of the query graph to a second query processor;

creating, at the second query processor, an object to represent a replica of a result of the first sub-graph from the first query processor;

sending a subscription request from the second query processor to the first query processor to receive consistent updates to the result of the first sub-graph;

receiving, at the second query processor, an initial snapshot of the result from the first query processor;

storing the initial snapshot as the replica of the result and propagating update messages through the second sub-graph at the second query processor, the update messages being based on the initial snapshot and indicating data of the initial snapshot as having been added to the replica, the replica being a full local copy at the second query processor of all subscribed data of the result of the first sub-graph from the first query processor; and

responsive to receiving a notification at the second query processor, updating the replica of the result and propagating changes through the second sub-graph at the second query processor.

2. The method of claim 1 , wherein the second query processor cancels the subscription request to the first query processor.

3. The method of claim 1 , further comprising:

acquiring an update lock in response to receiving the notification at the second query processor and releasing the update lock after updating the replica of the result.

4. The method of claim 1 , further comprising:

receiving a query;

parsing the query;

in response to said parsing, creating the query graph based on the query; and

determining a current output of the query graph based on an output of the second sub-graph.

5. The method of claim 1 , wherein the notification includes at least one selected from a group consisting of a data add notification, a data modify notification, a data delete notification, or a data reindex notification.

6. The method of claim 1 , wherein the query graph, the first sub-graph, and the second sub-graph are directed acyclic graphs.

7. The method of claim 1 , further comprising:

assigning the replica of the result as an input to the second sub-graph at the second query processor.

8. The method of claim 1 , further comprising:

adding at the first query processor a first listener to the first sub-graph as a dependent of the result;

receiving, at the first listener, an update notification indicating an update to the result;

sending, by the first listener, the notification to the second query processor including an indication of change to the result and a copy of any changed data.

9. The method of claim 8 , wherein the update notification includes at least one selected from a group consisting of a data add notification, a data modify notification, a data delete notification, or a data reindex notification.

10. A method comprising:

assigning a first sub-graph of a query graph to a first query processor;

assigning a second sub-graph of the query graph to a second query processor;

creating, at the second query processor, an object to represent a replica of a result of the first sub-graph from the first query processor;

sending a subscription request from the second query processor to the first query processor to receive consistent updates to the result of the first sub-graph;

receiving, at the second query processor, an initial snapshot of the result from the first query processor;

storing the initial snapshot as the replica of the result and propagating messages through the second sub-graph at the second query processor, the messages being based on the initial snapshot, the replica being a local copy at the second query processor of all subscribed data of the result of the first sub-graph from the first query processor;

receiving a notification at the second query processor corresponding to a change in the result of the first sub-graph from the first query processor;

responsive to receiving the notification at the second query processor, acquiring an update lock, updating the replica of the result, propagating changes through the second sub-graph at the second query processor, and releasing the update lock.

11. The method of claim 10 , wherein the second query processor cancels the subscription request to the first query processor.

12. The method of claim 10 , further comprising:

receiving a query;

parsing the query;

in response to said parsing, creating the query graph based on the query; and

determining a current output of the query graph based on an output of the second sub-graph.

13. The method of claim 10 , further comprising:

assigning the replica of the result as an input to the second sub-graph at the second query processor.

14. The method of claim 10 , wherein the notification includes at least one selected from a group consisting of a data add notification, a data modify notification, a data delete notification, or a data reindex notification.

15. The method of claim 10 , further comprising:

adding at the first query processor a first listener to the first sub-graph as a dependent of the result;

receiving, at the first listener, an update notification indicating an update to the result;

sending, by the first listener, the notification to the second query processor including an indication of a change to the result and a copy of any changed data.

16. The method of claim 15 , wherein the update notification includes at least one selected from a group consisting of a data add notification, a data modify notification, a data delete notification, or a data reindex notification.

17. The method of claim 10 , wherein the query graph, the first sub-graph, and the second sub-graph are directed acyclic graphs.

18. A nontransitory computer readable medium having stored thereon software instructions that, when executed by a processor, cause the processor to perform operations comprising:

obtaining current logical clock time and current logical clock state;

determining if the current logical clock state is idle;

when the current logical clock state is idle:

reading current data as a result snapshot, wherein the current data is data that is current for the current logical clock time;

when the current logical clock state is not idle:

reading previous data as the result snapshot, wherein the previous data is data that existed prior to the current logical clock time;

querying a new current logical clock time; and

determining if the new current logical clock time and the current logical clock time are identical;

when the new current logical clock time is identical to the current logical clock time:

sending the result snapshot as the initial snapshot of the result;

when the new current logical clock time is not identical to the current logical clock time:

acquiring an update lock;

reading new current data;

releasing the update lock; and

sending the new current data as the initial snapshot of the result.

19. The nontransitory computer readable medium of claim 18 , wherein the operations further comprise:

assigning a first sub-graph of a query graph to the first query processor;

assigning a second sub-graph of the query graph to the second query processor;

creating, at the second query processor, an object to represent a replica of a result of the first sub-graph from the first query processor;

sending a subscription request from the second query processor to the first query processor to receive consistent updates to the result of the first sub-graph;

receiving, at the second query processor, the initial snapshot of the result from the first query processor, the initial snapshot being sent in response to the subscription request; and

storing the initial snapshot as the replica of the result.

20. The nontransitory computer readable medium of claim 19 , wherein the operations further comprise:

receiving a query;

parsing the query;

in response to said parsing, creating the query graph based on the query; and

determining a current output of the query graph based on an output of the second sub-graph.

21. The nontransitory computer readable medium of claim 19 , wherein the second query processor cancels the subscription request to the first query processor.

22. The nontransitory computer readable medium of claim 19 , wherein the query graph, the first sub-graph, and the second sub-graph are directed acyclic graphs.

Assignments (4)
CHANGE OF NAME Recorded Dec 30, 2020
From: LLUMON LLC
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 054779/0645 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE'S NAME PREVIOUSLY RECORDED AT REEL: 048184 FRAME: 0558. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 4, 2019
From: WRIGHT, CHARLES; CAUDY, RYAN; KENT, DAVID R., IV; ZELDIS, MARK; RIES, BRIAN; BARANEC, ANDREW; TEODORESCU, RADU
To: ILLUMON LLC
Reel/Frame 048247/0785 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2019
From: WRIGHT, CHARLES; CAUDY, RYAN; KENT, DAVID R., IV; ZELDIS, MARK; RIES, BRIAN; BARANEC, ANDREW; TEODORESCU, RADU
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 048184/0558 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2019
From: ILLUMON LLC
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 048185/0491 →
Continuity (3)
Continuation 15813127 · Nov 14, 2017
Provisional Application 62549908 · Aug 24, 2017
Related Publication 20190155853A1 · May 23, 2019