IP Library Granted Patent US 9,805,084
Granted Patent B2
US 9,805,084 · App. 15/154,975 · Granted Oct 31, 2017

Computer data system data source refreshing using an update propagation graph

Inventors: Charles Wright (Cortlandt Manor, NY); Ryan Caudy (New York, NY); David R. Kent, IV (Colorado Springs, CO); Herve Bronnimann (New York, NY); Radu Teodorescu (New York, NY)
G06F17/30368G06F3/0481G06F3/0482G06F3/0485G06F3/04847G06F3/04895G06F3/0605G06F3/067G06F3/0656G06F8/30G06F8/41G06F8/427G06F8/60G06F11/1451G06F11/1464G06F11/1469G06F12/0261G06F12/084G06F15/17331G06F17/2235G06F17/24G06F17/246G06F17/276G06F17/2715G06F17/30117G06F17/30312G06F17/30315G06F17/30321G06F17/30324G06F17/30327G06F17/30333G06F17/30336G06F17/30339G06F17/30345G06F17/30371G06F17/30374G06F17/30377G06F17/30398G06F17/30424G06F17/30448G06F17/30454G06F17/30477G06F17/30522G06F17/30528G06F17/30554G06F17/30563G06F17/30584G06F17/30598G06F17/30864G06F17/30867G06F17/30887G06F17/30958G06F17/30997H04L12/18H04L51/12H04L61/2069H04L63/101H04L63/102H04L67/1002H04L67/34H04L67/42H04L69/16G06F2201/805G06F2201/84G06F2212/60
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,805,084
App. No.
15/154,975
Granted
Oct 31, 2017
Kind
B2
Abstract

Described are methods, systems and computer readable media for data source refreshing.

Claims (59)

1. A system for updating a data object using an update propagation graph, the system comprising:

one or more hardware processors coupled to a nontransitory computer readable medium having stored thereon software instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including:

receiving, at a remote query processor, a first query from a client, the first query referencing a plurality of data objects including one or more data sources;

determining dependencies between the data objects in the first query;

generating an update propagation graph (UPG) in a context of the remote query processor based on the first query, the UPG having a plurality of nodes each corresponding to one of the data objects, the UPG having a structure representing the dependencies between the data objects in the first query;

determining a logical clock has transitioned to an updating state;

processing one or more changes to one or more corresponding data sources, wherein the changes are processed according to an order determined by the UPG, wherein change processing for each data source includes:

invoking a data source refresh method for a data source for which changes are being processed;

determining whether a priority queue for the data source is empty;

when the priority queue is not empty, retrieving a next change notification message from the priority queue and delivering the change notification to a corresponding data source and repeating determining whether the priority is queue is empty; and

when the priority queue is empty, setting the logical clock to an idle state;

updating the structure of the UPG in response to a second query being executed by the remote query processor; and

after the updating, processing another one or more changes according to a different order determined by the updated UPG.

2. The system of claim 1 , wherein the change notifications can include one of a data add notification, a data modify notification, a data delete notification and a data reindex notification.

3. The system of claim 1 , wherein each node of the UPG includes one of a dynamic node, a static node and an internal node.

4. The system of claim 1 , wherein the operations further include adding an additional notification to the priority queue from a listener associated with the UPG.

5. The system of claim 1 , wherein one or more nodes represents a table data object.

6. The system of claim 1 , wherein one or more nodes represents a nontabular data object.

7. The system of claim 1 , wherein a node can include an internal node that is a data source for another internal node or a data source.

8. The system of claim 1 , wherein the operations further comprise determining that a data source has been garbage collected and not performing updating processing for the garbage collected data source.

9. The system of claim 1 , wherein the operations further include:

constructing the plurality of nodes in a construction order based on the dependencies between the data objects in the first query,

wherein the order in which the data sources are processed is the construction order.

10. A method for updating a data object using an update propagation graph, the method comprising:

receiving, at a remote query processor, a first query from a client, the first query referencing a plurality of data objects including one or more data sources;

determining dependencies between the data objects in the first query;

generating an update propagation graph (UPG) in a context of the remote query processor based on the first query, the UPG having a plurality of nodes each corresponding to one of the data objects, the UPG having a structure representing the dependencies between the data objects in the first query;

determining a logical clock has transitioned to an updating state;

processing one or more changes to one or more corresponding data sources, wherein the changes are processed according to an order determined by the UPG, wherein change processing for each data source includes:

invoking a data source refresh method for a data source for which changes are being processed;

determining whether a priority queue for the data source is empty;

when the priority queue is not empty, retrieving a next change notification message from the priority queue and delivering the change notification to a corresponding data source and repeating determining whether the priority is queue is empty; and

when the priority queue is empty, setting the logical clock to an idle state;

updating the structure of the UPG in response to a second query being executed by the remote query processor; and

after the updating, processing another one or more changes according to a different order determined by the updated UPG.

11. The method of claim 10 , wherein the change notifications can include one of a data add notification, a data modify notification, a data delete notification and a data reindex notification.

12. The method of claim 10 , wherein each node of the UPG includes one of a dynamic node, a static node and an internal node.

13. The method of claim 10 , further comprising adding an additional notification to the priority queue from a listener associated with the UPG.

14. The method of claim 10 , wherein one or more nodes represents a table data object.

15. The method of claim 10 , wherein a node can include an internal node that is a data source for another internal node or a data source.

16. The method of claim 10 , further comprising determining that a data source has been garbage collected and not performing updating processing for the garbage collected data source.

17. The method of claim 10 , further comprising:

constructing the plurality of nodes in a construction order based on the dependencies between the data objects in the first query,

wherein the order in which the data sources are processed is the construction order.

18. A nontransitory computer readable medium having stored thereon software instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including:

receiving, at a remote query processor, a first query from a client, the first query referencing a plurality of data objects including one or more data sources;

determining dependencies between the data objects in the first query;

generating an update propagation graph (UPG) in a context of the remote query processor based on the first query, the UPG having a plurality of nodes each corresponding to one of the data objects, the UPG having a structure representing the dependencies between the data objects in the first query;

determining a logical clock has transitioned to an updating state;

processing one or more changes to one or more corresponding data sources, wherein the changes are processed according to an order determined by the UPG, wherein change processing for each data source includes:

invoking a data source refresh method for a data source for which changes are being processed;

determining whether a priority queue for the data source is empty;

when the priority queue is not empty, retrieving a next change notification message from the priority queue and delivering the change notification to a corresponding data source and repeating determining whether the priority is queue is empty; and

when the priority queue is empty, setting the logical clock to an idle state;

updating the structure of the UPG in response to a second query being executed by the remote query processor; and

after the updating, processing another one or more changes according to a different order determined by the updated UPG.

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

constructing the plurality of nodes in a construction order based on the dependencies between the data objects in the first query,

wherein the order in which the data sources are processed is the construction order.

Assignments (3)
CHANGE OF NAME Recorded Sep 5, 2018
From: ILLUMON LLC
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 047017/0500 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2017
From: RIES, BRIAN; FERRETTI-SMYTHE, JUAN CRISTIAN; WRIGHT, CHARLES; VYDROV, OLEG; CAUDY, RYAN; KENT, DAVID R., IV; DORFMAN, NATHANIEL J.; TEODORESCU, RADU; ZELDIS, MARK; BRONNIMANN, HERVE; BASRALIAN, RAFFI
To: ILLUMON LLC
Reel/Frame 044557/0029 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2017
From: WALLEYE SOFTWARE, LLC
To: ILLUMON LLC
Reel/Frame 043722/0092 →
Continuity (2)
Provisional Application 62161813 · May 14, 2015
Related Publication 20160335305A1 · Nov 17, 2016