IP Library Granted Patent US 10,909,183
Granted Patent B2
US 10,909,183 · App. 16/215,543 · Granted Feb 2, 2021

Computer data system data source refreshing using an update propagation graph having a merged join listener

Inventors: Charles Wright (Cortlandt Manor, NY); Ryan Caudy (New York, NY); David R. Kent, IV (Colorado Springs, CO); Mark Zeldis (Randolph, NJ); Raffi Basralian (New York, NY); Radu Teodorescu (New York, NY)
Assignee: Deephaven Data Labs LLC
G06F16/90335G06F3/0481G06F16/128G06F16/21G06F16/221G06F16/23G06F16/235G06F16/2358G06F16/2365G06F16/2372G06F16/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 10,909,183
App. No.
16/215,543
Granted
Feb 2, 2021
Kind
B2
Abstract

Described are methods, systems and computer readable media for data source refreshing using an update propagation graph having a merged join listener.

Claims (67)

1. A system for updating a data object using update propagation graphs and merged join listeners to determine consistent join update processing, 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:

adding a join result structure to an update propagation graph (UPG) as a child of a merged join listener, wherein the merged join listener is a child of a plurality of objects that are subject to a join operation;

propagating updates through the UPG;

combining update notifications from the plurality of objects into a merged notification;

wherein the combining includes:

for each current notification received at the merged join listener during a given update clock cycle:

determining whether a priority queue is empty;

determining whether the priority queue includes an existing notification from a merged notification listener for the given update clock cycle, the priority queue comprising a plurality of elements, each of the elements having an associated node of the UPG and an associated priority such that a first element with a first priority is served before a second element with a second priority, priority of each of the elements of the priority queue being determined based on an arrangement of nodes within the UPG,

delivering the merged notification to a join result structure node;

receiving the merged notification at the join result structure node; and

applying changes to update a result of the join operation based on the merged notification.

2. The system of claim 1 , wherein the plurality of objects are tables.

3. The system of claim 2 , wherein the join result structure is a table.

4. The system of claim 1 , wherein the UPG is a directed acyclic graph (DAG).

5. The system of claim 1 , wherein the plurality of objects consists of three or more objects.

6. The system of claim 1 , wherein the operations further include adding a second join result structure to the UPG as a second child of the merged join listener.

7. The system of claim 6 , wherein the operations further include receiving a second merged notification at the second join result structure's node of the UPG.

8. The system of claim 1 , wherein the join result structure comprises a plurality of matrices.

9. The system of claim 1 , wherein the join operation is an operation selected from a group consisting of an outer join, an inner join, and a cross join.

10. A method comprising:

adding a join result structure to an update propagation graph (UPG) as a child of a merged join listener, wherein the merged join listener is a child of a plurality of objects that are subject to a join operation;

propagating updates through the UPG;

combining update notifications from the plurality of objects into a merged notification;

wherein the combining includes:

for a current notification received at the merged join listener during a given update clock cycle:

determining whether a priority queue is empty;

determining whether the priority queue includes an existing notification from a merged notification listener for the given update clock cycle, the priority queue comprising a plurality of elements, each of the elements having an associated node of the UPG and an associated priority such that a first element with a first priority is served before a second element with a second priority, priority of each of the elements of the priority queue being determined based on an arrangement of nodes within the UPG,

delivering the merged notification to a join result structure node;

receiving the merged notification at the join result structure node; and

applying changes to update a result of the join operation based on the merged notification.

11. The method of claim 10 , wherein the plurality of objects consists of a plurality of tables.

12. The method of claim 10 , wherein the UPG is a directed acyclic graph (DAG).

13. The method of claim 10 , wherein the merged join listener combining update notifications from the plurality of objects for a given update clock cycle into a merged notification comprises:

receiving a notification during the given update clock cycle;

determining that the priority queue includes an existing notification from the merged notification listener for the given update clock cycle; and

updating, responsive to the determining, the existing notification to include an additional notification based on the received notification.

14. The method of claim 10 , wherein the merged join listener combining update notifications from the plurality of objects for a given update clock cycle into a merged notification comprises:

receiving a notification during the given update clock cycle;

determining that the priority queue does not include an existing notification from the merged notification listener for the given update clock cycle; and

adding, responsive to the determining, a new notification from the merged notification listener to the priority queue based on the received notification.

15. The method of claim 14 , wherein the merged join listener combining update notifications from the plurality of objects for a given update clock cycle into a merged notification further comprises:

receiving a second notification during the given update clock cycle;

determining that the priority queue includes an existing notification from the merged notification listener for the given update clock cycle, the existing notification being the new notification; and

updating, responsive to the determining, the existing notification to include an additional notification based on the second notification.

16. The method of claim 10 , further comprising adding a second join result structure to the UPG as a second child of the merged join listener.

17. The method of claim 16 , further comprising receiving a second merged notification at the second join result structure's node of the UPG.

18. The method of claim 17 wherein the second merged notification is a copy of the merged notification.

19. The method of claim 10 , wherein the join result structure comprises a plurality of matrices.

20. The method of claim 10 , wherein the join operation is an operation selected from a group consisting of an outer join, an inner join, and a cross join.

21. 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:

adding a join result structure to an update propagation graph (UPG) as a child of a merged join listener, wherein the merged join listener is a child of a plurality of objects that are subject to a join operation;

propagating updates through the UPG;

combining update notifications from the plurality of objects into a merged notification;

wherein the combining includes:

for a notification received at the merged join listener during a given update clock cycle:

determining whether a priority queue is empty;

determining whether the priority queue includes an existing notification from a merged notification listener for the given update clock cycle, the priority queue comprising a plurality of elements, each of the elements having an associated node of the UPG and an associated priority such that a first element with a first priority is served before a second element with a second priority, priority of each of the elements of the priority queue being determined based on an arrangement of nodes within the UPG,

delivering the merged notification to a join result structure node;

receiving the merged notification at the join result structure node; and

applying changes to update a result of the join operation based on the merged notification.

22. The nontransitory computer readable medium of claim 21 , wherein the plurality of objects are tables and the join result structure is a table.

23. The nontransitory computer readable medium of claim 21 , wherein the UPG is a directed acyclic graph (DAG).

24. The nontransitory computer readable medium of claim 21 , wherein the plurality of objects consists of three or more objects.

25. The nontransitory computer readable medium of claim 21 , wherein the operations further include adding a second join result structure to the UPG as a second child of the merged join listener.

26. The nontransitory computer readable medium of claim 21 , wherein the join result structure comprises a plurality of matrices.

27. The nontransitory computer readable medium of claim 21 , wherein the join operation is an operation selected from a group consisting of an outer join, an inner join, and a cross join.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2019
From: WRIGHT, CHARLES; CAUDY, RYAN; KENT, DAVID R., IV; ZELDIS, MARK; TEODORESCU, RADU; BASRALIAN, RAFFI
To: ILLUMON LLC
Reel/Frame 047920/0504 →
CHANGE OF NAME Recorded Jan 7, 2019
From: ILLUMON LLC
To: DEEPHAVEN DATA LABS LLC
Reel/Frame 047920/0748 →
Continuity (3)
Continuation 15813112 · Nov 14, 2017
Provisional Application 62549908 · Aug 24, 2017
Related Publication 20190108167A1 · Apr 11, 2019