IP Library Granted Patent US 9,679,006
Granted Patent B2
US 9,679,006 · App. 15/154,988 · Granted Jun 13, 2017

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)
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,679,006
App. No.
15/154,988
Granted
Jun 13, 2017
Kind
B2
Abstract

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

Claims (63)

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:

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

at the remote query processor, performing operations including:

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

receiving a join-based query digitally from the client computer to the 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:

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 the digital communications network;

receiving a join-based query digitally from the client computer to the 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.

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

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

at the remote query processor, performing operations including:

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

receiving a join-based query digitally from the client computer to the 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.

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 20160335319A1 · Nov 17, 2016