Precise Parallel Prefetching for Disaggregated Query Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Executing queries in disaggregated, transient, elastic compute clusters with data lakes poses challenges related to performance, financial cost, and fault tolerance.

Innovation Solution

The implementation of Spark Native Execution (SNE) with Precise Parallel Prefetching (PPP) on Data Lakes, which enables massively parallel processing by transparently integrating with the Apache Spark architecture, optimizing cloud store bandwidth, and employing asynchronous intermittent precise checkpoints and recovery mechanisms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If data is stored in a data lake with shared storage repository decoupled from compute clusters, then storage scalability and flexibility are improved, but query execution performance and access speed deteriorate due to network overhead

Engineering Contradiction:
Improvestorage scalabilityVSAvoidquery execution speed
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The system performs preliminary actions by pre-fetching data from the data lake to compute node memory before queries are executed. The query optimizer analyzes upcoming queries and proactively loads required data blocks into memory, eliminating network access delays during actual query execution. This resolves the contradiction by preparing data in advance, so that while storage remains decoupled for scalability, the performance penalty of network access is avoided through anticipatory data loading.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention introduces an intermediary layer in the form of compute node memory that acts as a buffer between the shared storage repository and query processing. This memory intermediary caches frequently accessed data blocks, reducing the frequency and volume of network accesses to the data lake. The intermediary resolves the contradiction by decoupling storage scalability from query performance - storage can scale independently while the intermediary maintains fast access to required data.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If compute clusters are made transient and elastic with on-demand provisioning, then resource utilization and cost efficiency are improved, but fault tolerance and query completion reliability deteriorate

Engineering Contradiction:
Improveresource utilizationVSAvoidquery completion reliability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs preliminary checkpointing of query execution state to the data lake at regular intervals before compute nodes are deallocated. This ensures that even if transient compute nodes fail or are reclaimed, the query can be restarted from the last checkpoint on new nodes. The preliminary action of saving state resolves the contradiction by enabling elastic resource usage while maintaining query completion reliability through periodic state persistence.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention implements feedback mechanisms where the system continuously monitors query progress and compute node health, dynamically adjusting checkpoint frequency and data prefetching strategies. When compute nodes show signs of instability or queries are taking longer than expected, the system increases checkpointing frequency to ensure reliability. This feedback loop resolves the contradiction by adapting resource management to actual query needs, maintaining reliability while maximizing elastic resource utilization.

Inventive Principle:
Principle #23Feedback

3Speed

If data is pre-fetched to compute node memory, then query execution speed is improved, but memory usage and cost deteriorate

Engineering Contradiction:
Improvequery execution speedVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The system applies local quality by prefetching and caching only the specific data blocks required for upcoming queries in compute node memory, rather than uniformly caching all data. The query optimizer analyzes query patterns and selectively loads only necessary data subsets into memory based on local query requirements. This resolves the contradiction by optimizing memory usage to contain only locally relevant data needed for immediate query execution, improving speed without excessive memory consumption.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The invention uses partial action by prefetching only the portion of data required for upcoming queries rather than entire datasets. The system calculates precise data requirements based on query plans and prefetches only those specific blocks, avoiding unnecessary memory allocation. This partial prefetching approach resolves the contradiction by providing enough data in memory to maintain fast query execution while limiting memory usage to only what is strictly necessary for the partial set of required data blocks.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS12271375B2Disaggregated query processing utilizing precise, parallel, asynchronous shared storage repository access
Publication Date: 2025.04.08 WIND JAMMER TECH LLC
  • US12271375B2 patent drawing
  • US12271375B2 patent drawing
  • US12271375B2 patent drawing

AI summary

Executing a query in a disaggregated cluster. A query is received at the disaggregated cluster. A query graph is created based on the query that identifies a hierarchy of vertices, where each vertex is associated with a set of data responsive to at least a portion of the query. The compute nodes process the query graph by first identifying a minimum set of tables, files, and objects stored on the storage nodes required to retrieve data that satisfy the query. Next, the compute nodes selectively assign the identified tables, files, and objects to a leaf vertex of the query graph to optimize retrieving data from the storage nodes. Thereafter, the compute nodes process the retrieved data sets associated with each vertex using separate threads of execution for each vertex of the query graph such that leaf vertices are performed in parallel. The compute nodes then provide a result set.