Patent ID: 8473483
Filing Date: 2013-06-25
Classification: G06F

Abstract:
1. A computer storage device for use in a distributed database system, wherein the distributed database system stores a first table and a second table, the first and second tables having a join attribute column, the distributed database system including a first node and a second node, the first node and second node each storing a portion of the first table and a portion of the second table such that the first and second tables are distributed across the first and second nodes, the computer storage device storing computer-executable instructions which, when executed by one or more processors of the distributed database system, implement a method for performing a query over the first and second tables, wherein the method includes: an act of receiving a query for joining together selected items from the first table with selected items from the second table, the query including a first query term and a second query term, the first query term for selecting corresponding rows from the first and second tables that have a specified relationship based on values in the join attribute column, the second query term for filtering rows based on column values in a second column of the first table; an act of the first node determining that a first portion of the first table stored at the first node and a first portion of the second table stored at the first node are join incompatible; an act of the first node sending first replicated column values from the join attribute column to the second node, the first replicated column values selected from the first portion of the first table in accordance with the second query term; an act of the first node receiving second replicated column values from the join attribute column from the second node, the second replicated column values selected from a second portion of the first table stored at the second node in accordance with the second query term; an act of the first node combining the first replicated column values and the second replicated column values into combined replicated column values to create a filter for the second table, the combined replicated column values containing both the first replicated column values and the second replicated column values; an act of the first node using the filter for joining the combined replicated column values with rows from the first portion of the second table to select rows from the second table that satisfy the first query term; an act of the first node moving one or more of the selected rows to the second node for join compatibility with the second portion of the first table and retaining one or more of the selected rows at the first node; an act of the first node receiving one or more further selected rows from the second node for join compatibility with the first portion of the first table, the one or more further selected rows selected from the second portion of the second table; an act of the first node combining the one or more retained selected rows from the first portion of the second table with the one or more further selected rows from the second portion of the second table into combined selected rows that are join compatible with the first portion of the first table; and an act of joining the combined selected rows from the first and second portions of the second table with the first portion of the first table to partially satisfy the query.