Salted Database Join Execution in Distributed Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In distributed data processing systems, performing database joins on large tables can be computationally intensive, leading to inefficiencies due to data skew and memory constraints, where a single executor may need to process large amounts of data, causing reduced throughput and prolonged processing times.

Innovation Solution

The method involves automatically calculating a salt factor for each value of the join key, applying salting to reduce the size of data processed by each executor, and expanding the second table by a lesser extent by using different salt factors for different groups of rows, ensuring that no executor exceeds its processing capacity while minimizing data expansion.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If database joins are performed on large tables in distributed data processing systems, then the join operation can be executed in parallel across multiple executors, but data skew causes certain executors to process disproportionately large amounts of data, leading to reduced throughput and prolonged processing times

Engineering Contradiction:
Improvejoin processing throughputVSAvoidjoin operation completion time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies segmentation by dividing the data processing workload into multiple salted partitions. Each partition is assigned to a different executor, ensuring that no single executor receives a disproportionate amount of data. This is achieved by adding salt columns to create evenly distributed segments across the dataset, thereby resolving the data skew problem and enabling balanced parallel processing.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements local quality by allowing each executor to process data with specific salt value combinations locally. Each executor is optimized to handle its assigned partition independently, with the understanding that different partitions may have different data characteristics. This local processing approach ensures that each executor operates at optimal efficiency for its specific data segment while contributing to the overall join operation.

Inventive Principle:
Principle #3Local quality

2Productivity

If salting is applied to reduce data processed by each executor, then processing balance is improved, but the data expansion increases the total computational workload

Engineering Contradiction:
Improveexecutor processing efficiencyVSAvoidtotal data volume
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent applies parameter changes by dynamically adjusting the salt factor based on the specific join operation requirements and data characteristics. Rather than applying a fixed salt factor, the system modifies the salt parameters adaptively to achieve optimal balance between data distribution and expansion. This allows the system to minimize total data volume while ensuring adequate processing balance across executors.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS12204542B2Performing database joins in distributed data processing systems
Publication Date: 2025.01.21 PALANTIR TECHNOLOGIES INC
  • US12204542B2 patent drawing
  • US12204542B2 patent drawing
  • US12204542B2 patent drawing

AI summary

A computer-implemented method for efficiently performing a database join in a distributed data processing system comprising multiple computational nodes, the method comprising determining a first set of one or more columns of a first database table and a second set of one or more columns of a second database table on which the join is to be performed; estimating a size of the rows of the first table which have a particular combination of values in the first set of columns; computing a salt factor n based on the estimated size of rows and further based on a processing capacity of a computational node of the distributed data processing system; assigning one of n different salt values to each row of the first table having the particular combination of values in the first set of columns; for each row of the second table having the particular combination of values in the second set of columns into n rows, expanding the row into n row, and assigning to each expanded row a different one of the n salt values; and performing a join operation on the modified first and second tables, wherein the rows of the first and second tables have the same combination of values in the first and second sets of columns and the same salt value are joined on the same computational node.