IP Library Granted Patent US 10,621,168
Granted Patent B2
US 10,621,168 · App. 15/583,934 · Granted Apr 14, 2020

Dynamic join processing using real time merged notification 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/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/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,621,168
App. No.
15/583,934
Granted
Apr 14, 2020
Kind
B2
Abstract

Described are methods, systems and computer readable media for dynamic join operations.

Claims (73)

1. A memory and processor efficient computer system for dynamic updating of join operations, the system comprising:

one or more processors;

computer readable storage coupled to the one or more processors, the computer readable storage having stored thereon instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including:

receiving a join-based query directed to a remote query processor that contains two or more input tables to be joined;

adding a node for each table providing input to the join operation to an update propagation graph;

adding a join operation results node to the update propagation graph for holding results of executing the join-based query;

adding a real-time merged notification listener for the join operation node in the update propagation graph;

applying the join operation to the two or more input tables using indexes from the two or more input tables to identify and retrieve data needed for the join operation in order to minimize local memory and processor usage;

using the real-time merged notification listener for the join operation node to listen for any changes to the joined two or more input tables in order to minimize local memory and processor usage by only conducting a join operation when a change has been detected; and

when the real-time merged notification listener receives notification of changes to any of the joined two or more input tables, using indexes from the two or more input tables to apply the join operation only to the changes to update the join operation results node only for changed index ranges in order to minimize local memory and processor usage.

2. The computer system of claim 1 , wherein the join-based query is a left_join resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table;

the one or more new corresponding second input table columns containing an aggregation of all values from the second input table that match a join criteria; and

types of all newly created second input table columns not involved in the join criteria being an array of the second input table's column type.

3. The computer system of claim 1 , wherein the join-based query is an as_of_join resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table;

the one or more new columns containing all values from the second input table that match a join criteria, the join criteria performing an exact match on all match columns except for one last match column of the match columns followed by performing a closest-less-than match on the last match column.

4. The computer system of claim 1 , wherein the join-based query is a reverse_as_of_join resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table; and

the one or more new columns containing all values from the input table that match a join criteria, the join criteria performing an exact match on all match columns except for one last match column of the match columns followed by performing a closest-greater-than match on the last match column.

5. The computer system of claim 1 , wherein the join-based query is a range_as_of_join resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table; and

the one or more new columns containing all values from the input table that match a join criteria, the join criteria returning each cell in the one or more new columns with an array of all values within a designated range for all match columns except for M match columns of the match columns where the match is exact, and the M match columns define a range match.

6. The computer system of claim 1 , wherein the join-based query is a natural_join resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table;

the table having a same number of rows as the source table, the same number of rows containing an original content of the source table rows; and

the one or more new columns determined by matching one or more values from the input table with the source table.

7. The computer system of claim 1 , wherein the join-based query is an exact_join resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table;

the table having a same number of rows as the source table, the same number of rows containing an original content of the source table rows;

the one or more new columns determined by matching one or more values from the input table with the source table; and

the table containing exactly one match for each row with the input table.

8. The computer system of claim 1 , wherein the join-based query creates a subset filtered by a match criteria on a full Cartesian product, resulting in a table that has one column for each of a plurality of columns in a first input table's columns, and one or more new corresponding second input table columns with names that do not overlap or are renamed in order to not overlap with a name of one or more columns from a first input table.

9. The computer system of claim 1 , wherein the join operation node is different than the join operation results node.

10. The computer system of claim 1 , wherein the real-time merged notification listener for the join operation node is separate from the join operation node.

11. The computer system of claim 1 , wherein the real-time merged notification listener for the join operation node is separate from the join operation results node.

12. The computer system of claim 1 wherein the operations of the remote query processor further include returning join operation results with strict ordering to guarantee ordering.

13. The computer system of claim 1 wherein the operations of the remote query processor further include returning the join operation results that can contain arrays mapped to data.

14. The computer system of claim 12 wherein the strict ordering is according to time.

15. The computer system of claim 12 wherein the strict ordering is dictated by an order of data in the two or more input tables.

16. The computer system of claim 1 , wherein the changes include one or more of an add, modify, delete, or re-index.

17. The computer system of claim 1 , wherein the operations of the remote query processor further comprise automatically re-applying the join operation when the real-time merged notification listener detects any one of an add, modify, delete, or re-index message.

18. The computer system of claim 1 , further comprising when the two or more input tables are derived from a same ancestor table, changes in the same ancestor table cause a cascade of change notifications through the update propagation graph causing the remote query processor to combine the change notifications for efficiency and consistency.

19. The computer system of claim 17 , wherein the automatically re-applying is only applied to changed portions of the two or more input tables and not to unchanged portions.

20. The computer system of claim 2 , wherein the join criteria includes a formula.

21. A method for dynamic updating of join operations, the method comprising:

receiving a join-based query directed to a remote query processor that contains two or more input tables to be joined;

adding a node for each table providing input to the join operation to an update propagation graph;

adding a join operation results node to the update propagation graph for holding results of executing the join-based query;

adding a real-time merged notification listener for the join operation node in the update propagation graph;

applying the join operation to the two or more input tables using indexes from the two or more input tables to identify and retrieve data needed for the join operation in order to minimize local memory and processor usage; and

using the real-time merged notification listener for the join operation node to listen for any changes to the joined two or more input tables in order to minimize local memory and processor usage by only conducting a join operation when a change has been detected.

22. The method of claim 21 , further comprising:

sending a digital request for a remote query processor from a client computer to a remote query processor on a query server computer;

automatically connecting the client computer to the remote query processor via a digital communications network,

wherein the receiving includes receiving the join-based query digitally from the client computer to the remote query processor that contains two or more input tables to be joined.

23. The method of claim 21 , further comprising:

the real-time merged notification listener receiving notification of changes to any of the joined two or more input tables; and

after the real-time merged notification listener receives notification of changes to any of the joined two or more input tables, using indexes from the two or more input tables to apply the join operation only to the changes to update the join operation results node only for changed index ranges in order to minimize local memory and processor usage.

24. 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 a join-based query directed to a remote query processor that contains two or more input tables to be joined;

adding a node for each table providing input to the join operation to an update propagation graph;

adding a join operation results node to the update propagation graph for holding results of executing the join-based query;

adding a real-time merged notification listener for the join operation node in the update propagation graph;

applying the join operation to the two or more input tables using indexes from the two or more input tables to identify and retrieve data needed for the join operation in order to minimize local memory and processor usage; and

using the real-time merged notification listener for the join operation node to listen for any changes to the joined two or more input tables in order to minimize local memory and processor usage by only conducting a join operation when a change has been detected.

25. The nontransitory computer readable medium of claim 24 , the operations further including:

automatically connecting a client computer to the remote query processor via a digital communications network,

wherein the receiving includes receiving the join-based query digitally from the client computer to the remote query processor that contains two or more input tables to be joined.

26. The nontransitory computer readable medium of claim 24 , the operations further including:

after the real-time merged notification listener receives notification of changes to any of the joined two or more input tables, using indexes from the two or more input tables to apply the join operation only to the changes to update the join operation results node only for changed index ranges in order to minimize local memory and processor usage.

27. A memory and processor efficient computer system for dynamic updating of join operations, the system comprising:

one or more processors;

computer readable storage coupled to the one or more processors, the computer readable storage having stored thereon instructions that, when executed by the one or more processors, cause the one or more processors to perform operations including:

receiving a join-based query digitally directed to a remote query processor that contains two or more input tables to be joined;

adding a node for each table providing input to the join operation to an update propagation structure;

adding a join operation results node to the update propagation structure for holding results of executing the join-based query;

adding a real-time merged notification listener for the join operation node in the update propagation structure; and

when the real-time merged notification listener receives notification of changes to any of the joined two or more input tables, using indexes from the two or more input tables to apply the join operation only to the changes to update the join operation results node only for changed index ranges in order to minimize local memory and processor usage.

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 15154988 · May 14, 2016
Provisional Application 62161813 · May 14, 2015
Related Publication 20170235794A1 · Aug 17, 2017