Hybrid Unicode String Comparison for ASCII-Heavy Database Text

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Unicode text processing is costly and inefficient, especially in database operations that predominantly handle ASCII-based text, as existing methods require costly Unicode weighting for all characters, leading to performance issues in operations like hash joins and equality comparisons.

Innovation Solution

A hybrid approach that analyzes text strings to determine if they consist entirely of ASCII characters, using ASCII weights for ASCII blocks and falling back to Unicode weighting only when necessary, with options for accent-insensitive or accent-sensitive comparisons, and using hash functions for efficient equality checks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If Unicode weighting is applied to all text strings, then accurate comparison and collation is achieved, but processing performance deteriorates significantly

Engineering Contradiction:
Improvecomparison accuracyVSAvoidprocessing performance
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The text string is segmented into ASCII blocks and non-ASCII blocks. ASCII blocks are processed using fast ASCII weighting, while non-ASCII blocks are processed using Unicode weighting. This segmentation allows the system to apply the appropriate weighting method to each segment, achieving accurate comparison while maintaining high performance for predominantly ASCII text.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different weighting methods are applied to different parts of the text string based on their character composition. ASCII characters receive ASCII weighting, while non-ASCII characters receive Unicode weighting. This local quality approach ensures that each character is weighted appropriately for its type, maintaining comparison accuracy while optimizing performance.

Inventive Principle:
Principle #3Local quality

2Productivity

If ASCII weighting is used for all text strings, then processing performance is improved, but comparison accuracy deteriorates for Unicode text

Engineering Contradiction:
Improveprocessing performanceVSAvoidcomparison accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The text string is divided into ASCII and non-ASCII segments. The ASCII segments are processed using fast ASCII weighting to maintain high performance, while non-ASCII segments are identified and processed using Unicode weighting to ensure accurate comparison. This segmentation resolves the contradiction by applying the right method to the right portion of the text.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system uses an intermediary mechanism to detect non-ASCII characters within text strings. When non-ASCII characters are detected, the system transitions from pure ASCII weighting to a hybrid approach that incorporates Unicode weighting for those specific characters, ensuring accuracy without sacrificing overall performance.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If Unicode text processing is applied to all operations, then full Unicode support is achieved, but processing cost increases significantly

Engineering Contradiction:
ImproveUnicode supportVSAvoidprocessing cost
Core Design Contradiction:
Adaptability or versatilityVSUse of energy by moving object

Solution Approach 1:

The system applies Unicode processing partially, only to the extent necessary. For text strings that are predominantly ASCII, the system uses fast ASCII weighting for the majority of the processing, and only applies Unicode weighting to specific non-ASCII characters when needed. This partial action approach provides full Unicode support where required while minimizing processing costs.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The system dynamically changes the processing parameter based on the text content. When text contains only ASCII characters, ASCII weighting parameters are used for efficient processing. When non-ASCII characters are detected, the system switches to Unicode weighting parameters for those specific characters, optimizing the balance between Unicode support and processing cost.

Inventive Principle:
Principle #35Parameter changes

4Productivity

If hybrid comparison approach is used, then processing efficiency is improved, but system complexity increases

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The text processing system is segmented into distinct components: an ASCII weighting component for fast processing, a non-ASCII detection component, and a Unicode weighting component for accurate handling of special characters. This segmentation allows each component to be optimized independently while working together to achieve high overall efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs self-service by automatically detecting whether a text string contains non-ASCII characters and selecting the appropriate weighting method without requiring external intervention. This self-service capability simplifies the user interface while maintaining the hybrid approach's efficiency benefits.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11211943B2Hybrid comparison for unicode text strings consisting primarily of ASCII characters
Publication Date: 2021.12.28 TABLEAU SOFTWARE INC
  • US11211943B2 patent drawing
  • US11211943B2 patent drawing
  • US11211943B2 patent drawing

AI summary

A method compares text strings having Unicode encoding. The method receives a first string S=s1s2 . . . sn and a second string T=t1t2 . . . tm, where s1, s2, . . . , sn and t1, t2, . . . , tm are Unicode characters. The method computes a first string weight for the first string S according to a weight function ƒ. When S consists of ASCII characters, ƒ(S)=S. when S includes one or more non-replaceable non-ASCII characters, the first string weight ƒ(S) is a concatenation of an ASCII weight prefix ƒA(S) and a Unicode weight suffix ƒU(S). The method also computes a second string weight for the second text string T. Equality of the strings is tested using the string weights.