Caching via Base Version Values

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current caching strategies face challenges in efficiently managing cache invalidation, leading to unnecessary coupling and high costs, especially in complex systems where frequent changes require costly mass-invalidation or manual subscription to change events, causing developers to avoid caching despite its benefits.

Innovation Solution

A caching architecture where consuming subsystems cache calculated information along with base version values from multiple subsystems, allowing for efficient cache validation by checking if the base version values have changed, thus eliminating the need for explicit cache invalidation and reducing unnecessary recalculations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If explicit cache invalidation is used when data changes, then cache correctness is maintained, but coupling between changed items and consumers increases and circular dependencies occur

Engineering Contradiction:
Improvecache correctnessVSAvoidcoupling between subsystems
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

A base version value acts as an intermediary between setup information and consuming subsystems. Instead of direct coupling where consumers must know about all changes, the base version value mediates by encoding the state of setup information. Consumers simply compare their cached base version value with the current one to determine if recalculation is needed, eliminating the need for complex invalidation logic and circular dependencies.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If event subscriptions are created for all possible changes, then cache invalidation is handled, but system complexity increases and new change types require additional subscriptions

Engineering Contradiction:
Improvecache invalidation handlingVSAvoidsubscription management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Multiple change events and invalidation triggers are merged into a single base version value. Instead of subscribing to numerous individual change events, the consuming subsystem only needs to check whether the base version value has changed. This consolidation reduces subscription management complexity while maintaining reliable cache invalidation handling.

Inventive Principle:
Principle #5Merging (Combining)

3Reliability

If mass-invalidation of all caches is performed on any change, then cache correctness is ensured, but computational cost and performance degradation occur

Engineering Contradiction:
Improvecache correctnessVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Cache invalidation is applied locally rather than globally. The base version value enables fine-grained invalidation by allowing consumers to determine precisely which cached values need updating based on whether their specific base version value has changed. This prevents unnecessary mass-invalidation of unrelated caches, reducing computational overhead and maintaining system performance.

Inventive Principle:
Principle #3Local quality

4Productivity

If caching is used to improve performance, then computational overhead is reduced, but ensuring cache correctness becomes expensive and difficult

Engineering Contradiction:
ImproveperformanceVSAvoidcache management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The cache validation mechanism becomes self-service through automatic base version value comparison. When a consuming subsystem needs to use cached information, it automatically retrieves the current base version value, compares it with its cached version, and determines whether recalculation is needed. This eliminates the need for complex manual cache management while maintaining correctness, allowing performance benefits to be realized without proportional increases in management complexity.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9396111B2Caching using base setup version
Publication Date: 2016.07.19 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9396111B2 patent drawing
  • US9396111B2 patent drawing
  • US9396111B2 patent drawing

AI summary

A consuming subsystem calculates information based on setup information from one or more other subsystems. Each of the one or more other subsystems generates a base version value that changes every time any of the setup information changes. The consuming subsystem caches information, including the base version values at the time the information was calculated by the consuming subsystem.