Intermediate Iterator for High-Performance Data Streaming

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing query processor technologies face challenges in achieving high-performance data streaming due to uncertainties in data flow granularity, memory allocation, and buffer reuse, particularly when handling large volumes of data elements in query execution.

Innovation Solution

The implementation of an intermediate iterator that manages the lifecycle of streaming data buffers, allowing for efficient batch processing and reuse by coordinating between parent and child iterators, thereby optimizing memory allocation and reducing overhead in data streaming operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional query processors handle data streaming without intermediate iterators, then implementation is simpler, but memory allocation overhead increases and data streaming performance deteriorates

Engineering Contradiction:
Improvedata streaming performanceVSAvoiditerator structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediate iterator as a mediator layer between parent and child iterators. This intermediate iterator manages buffer allocation and data flow coordination, reducing memory allocation overhead while maintaining streaming performance. The intermediary handles the complexity of buffer management, allowing parent iterators to focus on query logic without directly managing memory resources.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If buffers are allocated for each data processing operation, then data freshness is ensured, but memory allocation overhead increases and processing efficiency decreases

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidmemory allocation overhead
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent implements buffer recovery mechanisms where buffers are reused across multiple operations instead of being continuously allocated and discarded. The intermediate iterator manages a pool of reusable buffers, allocating them when needed and returning them to the pool after use. This approach maintains data freshness by ensuring buffers are properly cleared and validated while significantly reducing memory allocation overhead.

Inventive Principle:
Principle #34Discarding and recovering

3Productivity

If communication calls between iterators are reduced for performance, then data streaming efficiency improves, but data flow control becomes less precise

Engineering Contradiction:
Improvedata streaming efficiencyVSAvoiddata flow control precision
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent establishes continuous data flow mechanisms through the intermediate iterator that maintains persistent buffer references between parent and child iterators. Instead of creating discrete allocation/deallocation cycles for each data element, the intermediate iterator sustains continuous buffer usage across multiple data elements, reducing communication overhead while maintaining precise control through buffer validation and coordination protocols.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS10721323B2High-performance data streaming
Publication Date: 2020.07.21 SALESFORCE INC
  • US10721323B2 patent drawing
  • US10721323B2 patent drawing
  • US10721323B2 patent drawing

AI summary

High performance data streaming is provided. An intermediate iterator receives a request to process streaming data in a parent request buffer from a parent iterator. The intermediate iterator sends a request to provide a batch of the streaming data in a request child buffer to a child iterator. The intermediate iterator receives the batch of the streaming data in a child response buffer from the child iterator. The intermediate iterator processes the batch of the streaming data. The intermediate iterator sends the processed batch of the streaming data in a response parent buffer to the parent iterator.