Code Dictionary Generation via Non-Blocking Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing code dictionary generation methods are inefficient due to the use of blocking operations, which consume significant time and computing resources, and result in inefficient memory utilization, especially when dealing with large datasets.

Innovation Solution

The implementation of non-blocking operations such as ENCODE_FIRST, ENCODE_SPARSE_CODE, and ENCODE_FLAG_FIRST, which allow for the generation of code dictionaries without going through each value in a set, reducing the need for synchronization and memory storage, and enabling processing in a streaming fashion.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If blocking operations are used to generate code dictionaries, then code dictionary generation is performed with traditional sequential processing, but processor time and memory usage increase significantly

Engineering Contradiction:
Improvecode dictionary generation correctnessVSAvoidprocessor time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The code dictionary generation process is divided into multiple independent parallel tasks that can execute simultaneously. Each task processes a subset of the data independently using non-blocking operations, eliminating the sequential bottleneck and reducing total processor time while maintaining correctness through coordinated results aggregation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary actions by pre-computing statistics and metadata about the data distribution before the main encoding process. This allows the actual encoding operations to proceed in parallel without blocking, significantly reducing processor time while ensuring correct code dictionary generation through pre-established encoding rules.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If blocking operations are used to generate code dictionaries, then code dictionary generation is performed with traditional sequential processing, but memory usage increases significantly

Engineering Contradiction:
Improvecode dictionary generation correctnessVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The data is segmented into smaller partitions that can be processed independently in parallel. Each partition requires only a fraction of the total memory, allowing the system to generate code dictionaries using minimal memory at any given time while maintaining correctness through distributed processing and results consolidation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary analysis to determine optimal encoding parameters and create encoding tables that can be reused during the main processing phase. This preliminary action reduces the memory required during actual encoding operations, as the system can stream through data using pre-computed encoding rules rather than storing all possible mappings in memory.

Inventive Principle:
Principle #10Preliminary action

3Loss of time

If non-blocking operations are used to generate code dictionaries, then processor time and memory usage are reduced, but synchronization requirements increase

Engineering Contradiction:
Improveprocessor timeVSAvoidsynchronization complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

An intermediary coordination mechanism is introduced between parallel tasks to manage synchronization requirements. This mediator handles the coordination overhead by providing standardized interfaces for task communication and result aggregation, reducing the complexity of synchronization while enabling efficient parallel processing and minimizing processor time.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Quantity of substance

If non-blocking operations are used to generate code dictionaries, then memory usage is reduced, but code dictionary ordering may be compromised

Engineering Contradiction:
Improvememory usageVSAvoidcode dictionary ordering
Core Design Contradiction:
Quantity of substanceVSManufacturing precision

Solution Approach 1:

The system performs preliminary sorting and ordering operations on data partitions before the main parallel encoding process. This preliminary action establishes the correct ordering relationships in advance, allowing the parallel non-blocking operations to proceed without compromising final code dictionary ordering, while using minimal memory during the actual encoding phase.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20210390089A1Code dictionary generation based on non-blocking operations
Publication Date: 2021.12.16 ORACLE INT CORP
  • US20210390089A1 patent drawing
  • US20210390089A1 patent drawing
  • US20210390089A1 patent drawing

AI summary

Techniques related to code dictionary generation based on non-blocking operations are disclosed. In some embodiments, a column of tokens includes a first token and a second token that are stored in separate rows. The column of tokens is correlated with a set of row identifiers including a first row identifier and a second row identifier that is different from the first row identifier. Correlating the column of tokens with the set of row identifiers involves: storing a correlation between the first token and the first row identifier, storing a correlation between the second token and the second row identifier if the first token and the second token have different values, and storing a correlation between the second token and the first row identifier if the first token and the second token have identical values. After correlating the column of tokens with the set of row identifiers, duplicate correlations are removed.