Group joins to navigate data relationships
First Claim
Patent Images
1. A data retrieval system, comprising:
- a processor;
a component implemented by the processor that acquires a plurality of data collections, wherein the data collections are specified in accordance with a nested or hierarchical data model;
a join component configured to allow remote execution by a user that performs the following;
identifies a group join query from a query syntax, wherein the group join query comprises a query that is directed to at least two different data collections, the group join query being configured to combine data rows of the different data collections, the group join query comprising a group join operator that allocates and returns an enumerable object that captures one or more arguments passed to the group join operator, wherein the arguments specify functions that extract join key values from elements of both outer and inner sequences, and wherein a hash join is employed to combine the data of the two different data collections;
traverses the plurality of data collections to locate and combine data across the collections that satisfy one or more group join arguments of a query, wherein the data is automatically made available to the join component based on the group join arguments and wherein the join component preserves the order of any outer sequence elements and, for each outer sequence element, preserves the order of any matching inner sequence elements, wherein the traversal includes implementing a superset of inner joins and left outer joins which are each written in terms of grouped joins; and
based on the traversal, returns a hierarchical result;
a hash component that executes a hash join function over join keys of both the inner and the outer sequences, wherein the hash join modifies the group join to increase group join performance by combining outer and inner sequence elements;
an identifier component that discovers and identifies abbreviated queries among the group queries, wherein a join is inferred from the abbreviated query syntax; and
a translation component that receives identification information from the identifier component identifying abbreviated code and translates the abbreviated code into an expanded format for implementation by the join component.
2 Assignments
0 Petitions
Accused Products
Abstract
A group join query facilitates navigation of relationships (e.g., one-to-many or many-to-one) across a plurality of data collections. Such a query operator produces nested or hierarchical results that capture the arguments passed thereto. If desired, the nested results can be flattened to simulate conventional relational database results.
-
Citations
18 Claims
-
1. A data retrieval system, comprising:
-
a processor; a component implemented by the processor that acquires a plurality of data collections, wherein the data collections are specified in accordance with a nested or hierarchical data model; a join component configured to allow remote execution by a user that performs the following; identifies a group join query from a query syntax, wherein the group join query comprises a query that is directed to at least two different data collections, the group join query being configured to combine data rows of the different data collections, the group join query comprising a group join operator that allocates and returns an enumerable object that captures one or more arguments passed to the group join operator, wherein the arguments specify functions that extract join key values from elements of both outer and inner sequences, and wherein a hash join is employed to combine the data of the two different data collections; traverses the plurality of data collections to locate and combine data across the collections that satisfy one or more group join arguments of a query, wherein the data is automatically made available to the join component based on the group join arguments and wherein the join component preserves the order of any outer sequence elements and, for each outer sequence element, preserves the order of any matching inner sequence elements, wherein the traversal includes implementing a superset of inner joins and left outer joins which are each written in terms of grouped joins; and based on the traversal, returns a hierarchical result; a hash component that executes a hash join function over join keys of both the inner and the outer sequences, wherein the hash join modifies the group join to increase group join performance by combining outer and inner sequence elements; an identifier component that discovers and identifies abbreviated queries among the group queries, wherein a join is inferred from the abbreviated query syntax; and a translation component that receives identification information from the identifier component identifying abbreviated code and translates the abbreviated code into an expanded format for implementation by the join component. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of traversing data collections, comprising:
-
acquiring a query identifying a one to many relationship amongst an inner and outer data collection, wherein the inner and outer data collections are specified in accordance with a nested or hierarchical data model; identifying a group join query from a query syntax, wherein the group join query comprises a query that is directed to at least two different data collections, the group join query being configured to combine data rows of the different data collections, the group join query comprising a group join operator that allocates and returns an enumerable object that captures one or more arguments passed to the group join operator, wherein the arguments specify functions that extract join key values from elements of both outer and inner sequences, and wherein a hash join is employed to combine the data of the two different data collections; traversing the plurality of data collections in accordance with the query to locate and combine data across the collections that satisfy one or more group join arguments of a query, wherein the data is automatically made available to the join component based on the group join arguments and wherein the join component preserves the order of any outer sequence elements and, for each outer sequence element, preserves the order of any matching inner sequence elements, wherein the traversal includes implementing a superset of inner joins and left outer joins which are each written in terms of grouped joins; executing a hash join function over join keys of both the inner and the outer sequences, wherein the hash join modifies the group join to increase group join performance by combining outer and inner sequence elements; identifying one or more abbreviated queries among the group queries, wherein a join is inferred from the abbreviated query syntax; receiving identification information identifying abbreviated code portions and translating the abbreviated code into an expanded format for implementation by the join component; based on the traversal and the translated code, returning selected data in a nested format. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A system to navigate relationships amongst data collections, comprising:
-
a processing means; a memory means; means for receiving a language integrated query expression, wherein language integrated query expression is configured to query a plurality of data collections that are specified in accordance with a nested or hierarchical data model; means for identifying a group join query from a query syntax, wherein the group join query comprises a query that is directed to at least two different data collections, the group join query being configured to combine data rows of the different data collections, the group join query comprising a group join operator that allocates and returns an enumerable object that captures one or more arguments passed to the group join operator, wherein the arguments specify functions that extract join key values from elements of both outer and inner sequences, and wherein a hash join is employed to combine the data of the two different data collections; means for traversing the plurality of the plurality of data collections to locate and combine data across the plurality of data collections in accordance with the query expression, to satisfy one or more group join arguments of the query expression, wherein the data is automatically made available to the join component based on the group join arguments and wherein the join component preserves the order of any outer sequence elements and, for each outer sequence element, preserves the order of any matching inner sequence elements, wherein the traversal includes implementing a superset of inner joins and left outer joins which are each written in terms of grouped joins; means for executing a hash join function over join keys of both the inner and the outer sequences, wherein the hash join modifies the group join to increase group join performance by combining outer and inner sequence elements; means for identifying one or more abbreviated queries among the group queries, wherein a join is inferred from the abbreviated query syntax;
means for receiving identification information identifying abbreviated code portions and translating the abbreviated code into an expanded format for implementation by the join component; andmeans for returning a nested result based on the traversal and the translated code. - View Dependent Claims (18)
-
Specification