Multi-View Data Construct for Lock-Free Linked List Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data structures for managing linked lists in performance-critical systems, such as telecommunications and databases, face challenges in supporting concurrent access without locks, efficient insertion and deletion, and managing element lifecycles, leading to bottlenecks and inefficiencies.

Innovation Solution

A multi-view data construct that uses persistent elements with unique identifiers, reference counting, and access status flags to enable lock-free operations, allowing for both array-like and list-like operations, and eliminates the need for hazard pointers by managing element lifecycles within the elements themselves.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If locks are used to support concurrent access to data structures, then data integrity is maintained, but system performance deteriorates due to bottlenecks and stalling operations

Engineering Contradiction:
Improvedata integrityVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the locking mechanism entirely from the data structure, replacing mutex-based synchronization with a lock-free approach using version numbers and atomic operations. This removes the bottleneck caused by kernel-level arbitration while maintaining data integrity through alternative mechanisms.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent replaces the mechanical locking system (mutexes and kernel arbitration) with an atomic operation-based system using version numbers and compare-and-swap instructions. This substitution eliminates the need for context switches and kernel involvement, dramatically improving performance while maintaining reliability.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Ease of manufacture

If the entire data structure is locked during manipulation, then implementation is simplified, but other entities are stalled even when manipulating different elements

Engineering Contradiction:
Improveimplementation simplicityVSAvoidconcurrent operation efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The patent segments the locking granularity from the entire data structure down to individual elements or operations. Each element has its own version number, allowing fine-grained concurrent access. Entity A can manipulate element 1 while entity B simultaneously manipulates element 2 without interference.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The version number field serves multiple functions: it acts as a lock indicator, a modification tracker, and a conflict detection mechanism. This universal field replaces the need for separate lock structures while enabling both simplified implementation and high concurrent efficiency.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If only the element being manipulated is locked, then other entities can access different elements, but implementation becomes inefficient and complicated especially for insertion and deletion

Engineering Contradiction:
Improveconcurrent access efficiencyVSAvoidlocking mechanism complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges the version number with the element's data structure, combining modification tracking and conflict detection into a single field. This integration simplifies the implementation of fine-grained locking by eliminating separate lock structures and reducing the complexity of insertion and deletion operations.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

Each element serves its own locking and synchronization needs through its version number, without requiring external lock management. The element's version field automatically indicates whether it's being accessed and coordinates concurrent operations, eliminating the need for complex external locking protocols.

Inventive Principle:
Principle #25Self-service

4Speed

If arrays are used for direct access, then searching is quick, but insertion and deletion are expensive requiring relocation of adjacent elements

Engineering Contradiction:
Improvesearch speedVSAvoidinsertion and deletion efficiency
Core Design Contradiction:
SpeedVSProductivity

Solution Approach 1:

The patent adds a pointer dimension to the array structure, creating hybrid elements that contain both array indexing capabilities and linked-list pointer connections. This allows O(1) direct access via indexing while enabling efficient insertion and deletion through pointer manipulation without element relocation.

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

Solution Approach 2:

The patent creates a composite data structure combining array and linked-list properties in a single element type. Each element is a composite containing both an index field for direct access and pointer fields for linked-list operations, allowing the system to leverage the advantages of both structures simultaneously.

Inventive Principle:
Principle #40Composite materials

5Productivity

If doubly-linked lists are used for efficient insertion and deletion, then these operations are well suited, but searching takes more time as the list increases in length

Engineering Contradiction:
Improveinsertion and deletion efficiencyVSAvoidsearch time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent adds an indexing dimension to the linked-list structure by incorporating array-like index fields into each element. This allows direct computation of element positions and O(1) access to any element by index, while preserving the linked-list's efficient insertion and deletion capabilities through pointer manipulation.

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

6Reliability

If hazard pointers are used to manage element lifecycles, then concurrent access safety is improved, but the construct becomes more complex

Engineering Contradiction:
Improveconcurrent access safetyVSAvoidmemory management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the lifecycle management functionality from separate hazard pointer structures and integrates it directly into each element's version number field. This eliminates the need for external hazard pointer arrays and their associated complexity while maintaining concurrent access safety through the element's own version tracking.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Each element independently manages its own lifecycle and access safety through its version number, without requiring external hazard pointer management structures. The version field automatically tracks access state and coordinates concurrent operations, simplifying memory management while maintaining reliability.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9460143B2Methods, systems, and computer readable media for a multi-view data construct for lock-free operations and direct access
Publication Date: 2016.10.04 ORACLE INT CORP
  • US9460143B2 patent drawing
  • US9460143B2 patent drawing
  • US9460143B2 patent drawing

AI summary

Methods, systems, and computer readable media for a multi-view data construct that supports lock-free operations and direct access are disclosed. According to one aspect, a system includes a multi-view data construct including a persistent collection of elements, each element being associated with a unique identifier. Each element includes at least one pointer for configuring the element as a member of a linked list that contains as members elements of the multi-view data construct, data that indicates access status, and a data area within the collection itself or a pointer to a statically or dynamically allocated data area outside of the collection. A control module can identify elements in the collection by each element's respective identifier and can traverse elements in the collection using the pointers contained in each element. Concurrent access to an element by multiple entities is mediated using that element's access status and without using locks or locking operations.