Data Block Partitioning for High-Speed In-Memory Join Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Processing large datasets in computing systems, such as social networking and communication services, is inefficient due to the need to join and analyze tens or hundreds of millions of records, resulting in significant time delays and obsolete information.

Innovation Solution

Organizing data into 'Blocks' using a selected column or field as a partition key, allowing for in-memory operations that avoid slower storage devices, enabling faster data processing by limiting Block size to fit within memory space and using parallel processing to join and aggregate corresponding Blocks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional joining methods are used to process massive datasets, then complete data analysis is achieved, but processing time becomes excessive and information becomes obsolete

Engineering Contradiction:
Improvedata analysis completenessVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent divides massive datasets into smaller blocks that can be processed in parallel. Each block is organized with a block identifier and can be independently processed, allowing the system to analyze complete data subsets without processing the entire dataset sequentially, thus reducing overall processing time while maintaining analysis completeness.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary organization of data into blocks with identifiers before the actual analysis operation. This pre-processing step groups related data together and creates an efficient structure that enables faster subsequent processing, avoiding the need to organize and process the entire massive dataset from scratch each time analysis is needed.

Inventive Principle:
Principle #10Preliminary action

2Measurement precision

If entire datasets are joined for analysis, then comprehensive results are obtained, but memory requirements exceed available capacity

Engineering Contradiction:
Improveanalysis comprehensivenessVSAvoidmemory usage
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

The patent segments massive datasets into smaller blocks that fit within available memory capacity. Each block contains a manageable subset of records organized by block identifier, allowing comprehensive analysis to be performed on multiple blocks sequentially or in parallel without requiring the entire dataset to reside in memory simultaneously.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension of organization by creating blocks with block identifiers as a secondary sorting key. This additional organizational dimension allows the system to manage and process data in memory-efficient units while maintaining the ability to perform comprehensive joins and aggregations across all blocks.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Productivity

If data is organized into smaller Blocks for in-memory processing, then processing speed increases, but data organization complexity increases

Engineering Contradiction:
Improvedata processing speedVSAvoiddata organization complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent performs data blocking and identifier assignment as a preliminary action that is done once and then reused for multiple processing operations. This initial organization into blocks with identifiers creates a persistent structure that speeds up subsequent processing without requiring re-organization, amortizing the organizational complexity over multiple uses.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates block identifiers that reference and represent subsets of the original data without duplicating the entire data structure. These identifiers act as lightweight proxies that enable efficient block management and processing while avoiding the complexity of managing full data copies in memory.

Inventive Principle:
Principle #26Copying

4Quantity of substance

If traditional disk-based processing is used, then all data can be processed, but I/O operations slow down processing

Engineering Contradiction:
Improvedata processing capacityVSAvoidprocessing speed
Core Design Contradiction:
Quantity of substanceVSSpeed

Solution Approach 1:

The patent segments data into blocks that can be loaded into memory for processing, reducing the frequency of I/O operations. By organizing data into manageable blocks with identifiers, the system can process multiple blocks from memory without repeatedly accessing disk storage, thereby maintaining processing capacity while significantly improving speed.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary blocking and sorting of data before processing operations. This pre-organization allows the system to load specific blocks into memory based on processing needs rather than reading entire datasets from disk, reducing I/O operations and improving processing speed while maintaining the ability to process all necessary data.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9330129B2Organizing, joining, and performing statistical calculations on massive sets of data
Publication Date: 2016.05.03 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9330129B2 patent drawing
  • US9330129B2 patent drawing
  • US9330129B2 patent drawing

AI summary

A system, method, and apparatus are provided for organizing and joining massive sets of data (e.g., tens or hundreds of millions of event records). A dataset is Blocked by first identifying a partition key, which comprises one or more columns of the data. Each Block will contain all dataset records that have partition key values assigned to that Block. A cost constraint (e.g., a maximum size, a maximum number of records) may also be applied to the Blocks. A Block index is generated to identify all Blocks, their corresponding (sequential) partition key values, and their locations. A second dataset that includes the partition key column(s) and that must be correlated with the first dataset may then be Blocked according to the same ranges of partition key values (but without the cost constraint). Corresponding Blocks of the datasets may then be Joined/Aggregated, and analyzed as necessary.