IP Library Granted Patent US 10,572,474
Granted Patent B2
US 10,572,474 · App. 15/710,513 · Granted Feb 25, 2020

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)
Assignee: Deephaven Data Labs LLC
G06F16/2453G06F3/0481G06F3/0482G06F3/0483G06F3/0485G06F3/04847G06F3/04895G06F3/0605G06F3/067G06F3/0656G06F8/30G06F8/41G06F8/427G06F8/60G06F11/1451G06F11/1464G06F11/1469G06F12/0261G06F12/084G06F12/1483G06F15/17331G06F16/113G06F16/144G06F16/162G06F16/215G06F16/22G06F16/221G06F16/2228G06F16/2237G06F16/2246G06F16/2255G06F16/2264G06F16/2272G06F16/2282G06F16/23G06F16/2308G06F16/2358G06F16/2365G06F16/2372G06F16/2379G06F16/242G06F16/245G06F16/248G06F16/2428G06F16/2455G06F16/2456G06F16/2457G06F16/24534G06F16/24535G06F16/24537G06F16/24539G06F16/24553G06F16/24575G06F16/254G06F16/27G06F16/278G06F16/285G06F16/907G06F16/9024G06F16/951G06F16/9535G06F16/9566G06F16/9574G06F17/2235G06F17/24G06F17/245G06F17/246G06F17/276G06F17/2715G06F21/00G06F21/6209H04L12/18H04L51/046H04L51/12H04L61/2069H04L63/101H04L63/102H04L67/1002H04L67/141H04L67/28H04L67/2833H04L67/2842H04L67/34H04L67/42H04L69/16G06F16/2291G06F17/40G06F2201/805G06F2201/84G06F2212/1052G06F2212/154G06F2212/163G06F2212/60H04L67/2847
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 10,572,474
App. No.
15/710,513
Granted
Feb 25, 2020
Kind
B2
Abstract

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

Claims (69)

1. A system for updating a plurality of data objects 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 the plurality of data objects including one or more data sources;

determining dependencies between the plurality of data objects in the first query;

converting first code into in-memory data structures configured to hold a directed acyclic graph (DAG) structure in memory;

updating connectivity within the DAG based on execution of second code;

generating the update propagation graph (UPG) in a context of the remote query processor based on the first query and the DAG, the UPG having a plurality of nodes each corresponding to one of the plurality of data objects, the UPG having a structure representing the dependencies between the plurality of data objects in the first query, wherein a sequence in which the UPG is generated is recorded;

updating the structure of the UPG in response to a second query being executed by the remote query processor, wherein the sequence in which the UPG is updated is recorded; and

after the updating, processing one or more changes according to an order determined by the updated UPG, wherein the sequence determines the order in which the plurality of nodes in the UPG are processed,

wherein the DAG is comprised of one or more of a dynamic node, a static node, or an internal node,

wherein each of the dynamic node, the static node, or the internal node has one or more of input dynamic nodes, input static nodes or input internal nodes as inputs,

wherein the dynamic node includes a node of the DAG that updates as previously presented data corresponding to the dynamic node is received,

wherein the dynamic node includes a timer that triggers an event based on time intervals,

wherein the static node includes a node of the DAG that does not update,

wherein the internal node includes a listener node with associated listener monitoring code that places additional events into a priority queue of the DAG, and

wherein a priority of the event in the priority queue is based on a position of the DAG, and

wherein the internal node includes an interior node of the DAG.

2. The system of claim 1 , wherein the data sources include one or more of market data, system generated data, historical data, user input data from a remote user table server, and tables programmatically generated in-memory.

3. The system of claim 1 , wherein the data sources include correlation matrices, linear algebra structures, PDE solvers, non-matrix data structures, non-table data structures and mathematical data structures.

4. The system of claim 3 , wherein the data sources include a singular value decomposition of another data source.

5. The system of claim 1 , wherein the operations further include permitting a program to listen to changes from one or more of the plurality of nodes representing one of one or more of the plurality of data objects or an internal node of the UPG.

6. The system of claim 1 , wherein the DAG uses garbage collection to determine whether a part of the DAG should be deleted, wherein upstream links from a node in the DAG have hard links, and downstream links from the node in the DAG have weak links, so that child nodes prevent parent nodes from being garbage collected, and the parent nodes permit the child nodes to be garbage collected.

7. A method for updating one or more data objects using an update propagation graph, the method comprising:

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

determining dependencies between the one or more data objects in the first query;

converting first code into in-memory data structures configured to hold a directed acyclic graph (DAG) structure in memory;

updating connectivity within the DAG based on execution of second code;

generating an update propagation graph (UPG) in a context of the remote query processor based on the first query and the DAG, the UPG having a plurality of nodes each corresponding to one of the one or more data objects, the UPG having a structure representing the dependencies between the one or more data objects in the first query, wherein a sequence in which the UPG is generated is recorded;

updating the structure of the UPG in response to a second query being executed by the remote query processor, wherein the sequence in which the UPG is updated is recorded; and

after the updating, processing one or more changes according to an order determined by the updated UPG, wherein the one or more changes include one or more of addition to, modification of, deletion from or re-indexing of at least part of the one or more data objects,

wherein the DAG is comprised of one or more of a dynamic node, a static node, or an internal node,

wherein each of the dynamic node, the static node, or the internal node has one or more of input dynamic nodes, input static nodes or input internal nodes as inputs,

wherein the dynamic node includes a node of the DAG that updates as previously presented data corresponding to the dynamic node is received,

wherein the dynamic node includes a timer that triggers an event based on time intervals,

wherein the static node includes a node of the DAG that does not update,

wherein the internal node includes a listener node with associated listener monitoring code that places additional events into a priority queue of the DAG, and

wherein a priority of the event in the priority queue is based on a position of the DAG, and

wherein the internal node includes an interior node of the DAG.

8. The method of claim 7 , wherein the data sources include one or more of market data, system generated data, historical data, user input data from a remote user table server, and tables programmatically generated in-memory.

9. The method of claim 7 , wherein the data sources include correlation matrices, linear algebra structures, PDE solvers, non-matrix data structures, non-table data structures and mathematical data structures.

10. The method of claim 9 , wherein the data sources include a singular value decomposition of another data source.

11. The method of claim 7 , further comprising permitting a program to listen to changes from one or more of the plurality of nodes representing one of one or more of the one or more data objects or an internal node of the UPG.

12. The method of claim 7 , wherein the DAG uses garbage collection to determine whether a part of the DAG should be deleted, wherein upstream links from a node in the DAG have hard links, and downstream links from the node in the DAG have weak links, so that child nodes prevent parent nodes from being garbage collected, and the parent nodes permit the child nodes to be garbage collected.

13. A nontransitory computer readable medium having stored thereon software instructions that, when executed by 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 one or more data objects including one or more data sources;

determining dependencies between the one or more data objects in the first query;

converting first code into in-memory data structures configured to hold a directed acyclic graph (DAG) structure in memory;

updating connectivity within the DAG based on execution of second code;

generating an update propagation graph (UPG) in a context of the remote query processor based on the first query and the DAG, the UPG having a plurality of nodes each corresponding to one of the one or more data objects, the UPG having a structure representing the dependencies between the one or more data objects in the first query, wherein a sequence in which the UPG is generated is recorded;

updating the structure of the UPG in response to a second query being executed by the remote query processor, wherein the sequence in which the UPG is updated is recorded; and

after the updating, processing one or more changes according to an order determined by the updated UPG, wherein the sequence determines the order in which the plurality of nodes in the UPG are processed, and wherein the one or more changes include one or more of addition to, modification of, deletion from or re-indexing of at least part of the one or more data objects, and wherein information about the addition, the deletion, and the modification from an upstream node is used to compute changes to downstream nodes,

wherein the DAG is comprised of one or more of a dynamic node, a static node, or an internal node,

wherein each of the dynamic node, the static node, or the internal node has one or more of input dynamic nodes, input static nodes or input internal nodes as inputs,

wherein the dynamic node includes a node of the DAG that updates as previously presented data corresponding to the dynamic node is received,

wherein the dynamic node includes a timer that triggers an event based on time intervals,

wherein the static node includes a node of the DAG that does not update,

wherein the internal node includes a listener node with associated listener monitoring code that places additional events into a priority queue of the DAG, and

wherein a priority of the event in the priority queue is based on a position of the DAG, and

wherein the internal node includes an interior node of the DAG.

14. The nontransitory computer readable medium of claim 13 , wherein the data sources include one or more of market data, system generated data, historical data, user input data from a remote user table server, and tables programmatically generated in-memory.

15. The nontransitory computer readable medium of claim 13 , wherein the operations further include:

converting first code into in-memory data structures configured to hold a directed acyclic graph (DAG) structure in memory; and

updating connectivity within the DAG based on execution of second code.

16. The nontransitory computer readable medium of claim 15 , wherein the DAG is comprised of one or more of a dynamic node, a static node, or an internal node,

wherein the DAG comprises one or more of static subgraphs or dynamic subgraphs,

wherein the dynamic node includes a node of the DAG that updates as previously presented data corresponding to the dynamic node is received,

wherein the dynamic node is a timer that triggers an event based on time intervals,

wherein the static node includes a node of the DAG that does not update, and

wherein the internal node includes an interior node of the DAG.

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 Aug 22, 2018
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 046913/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2018
From: WALLEYE SOFTWARE, LLC
To: ILLUMON LLC
Reel/Frame 046666/0820 →
Continuity (3)
Continuation 15154975 · May 14, 2016
Provisional Application 62161813 · May 14, 2015
Related Publication 20180011891A1 · Jan 11, 2018
Cited By (2)
US 12,271,347 US 12,657,020