Anchor Row Vector Identification for Concurrent Reads

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In business intelligence (BI) queries on real-time data, the contention between reads and updates in databases leads to inconsistency and high latch overhead, especially in column stores where data is decomposed, causing readers to see outdated versions and updaters to wait for readers to 'drain out' before accessing records.

Innovation Solution

A method that includes storing an anchor row vector identification in local memory, determining its visibility based on isolation requirements, and re-reading it if unchanged, with a history tuple sequence number check to ensure readers access a consistent version of the data without needing to latch the entire record, allowing concurrent reads and updates in a decomposed store.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If readers latch the entire record to avoid seeing inconsistent versions, then data consistency is improved, but latch overhead increases and productivity decreases

Engineering Contradiction:
Improvedata consistencyVSAvoidquery performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the record into an anchor row (containing the latch) and data rows (containing actual data). Readers only latch the anchor row to ensure consistency, not the entire record. This allows readers to access data rows without holding locks on the full record, reducing latch overhead and improving query performance while maintaining data consistency through the version identifier in the anchor row.

Inventive Principle:
Principle #1Segmentation

2Reliability

If updaters wait for readers to drain out before accessing records, then data consistency is improved, but wait time increases and productivity decreases

Engineering Contradiction:
Improvedata consistencyVSAvoid updater wait time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

By separating the latch (anchor row) from the data (data rows), the system allows readers and updaters to operate concurrently on different segments. Readers hold latches only on anchor rows, not data rows, enabling updaters to proceed without waiting for readers to fully drain, thus reducing updater wait time while maintaining consistency through version identifiers.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The anchor row acts as an intermediary mechanism that mediates between readers and updaters. It provides a lightweight locking mechanism that coordinates access without requiring updaters to wait for complete reader termination, enabling more efficient concurrency while preserving data consistency through version tracking.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If readers scan large portions of the entire data set, then BI query coverage is improved, but latch overhead increases

Engineering Contradiction:
Improvequery coverageVSAvoidlatch overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies segmentation at the record level, where each record is divided into an anchor row (with latch and version identifier) and data rows. When readers scan large portions of data, they only need to manage latches on anchor rows, not entire records. This reduces the scope and overhead of latching while maintaining comprehensive query coverage across the data set.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11853284B2In-place updates with concurrent reads in a decomposed state
Publication Date: 2023.12.26 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11853284B2 patent drawing
  • US11853284B2 patent drawing
  • US11853284B2 patent drawing

AI summary

A method includes storing an anchor row vector identification for an anchor row to a local memory. It is determined whether the anchor row vector identification is visible based on isolation requirements. The anchor row vector identification is accessed upon a determination that the anchor row vector identification is visible, and the row vector identification is re-read from the local memory. It is determined whether the anchor row vector identification has not changed since a start of the accessing. Upon a determination that the anchor row vector identification has not changed, read anchor row fields are returned. A first check history is performed on an anchor row history tuple sequence number (TSN) for the anchor row.