OData Service Cache for Data Map Connectivity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing OData web services face inefficiencies in handling OData requests, particularly in determining whether to retrieve data from an in-memory cache or a data source, and in managing data manipulation requests that require formula updates, leading to suboptimal performance and client interactions.

Innovation Solution

Implementing a system that conditionally loads DataMaps into an in-memory cache, directs manipulation requests through the cache for formula updates, and retrieves data from either the cache or data source based on query depth and existence, while providing additional metadata to clients for efficient interactions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If data is retrieved from the data source for every request, then data freshness is ensured, but system performance and response time deteriorate

Engineering Contradiction:
Improvedata freshnessVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary actions by loading data into an in-memory cache before actual requests occur. Data is pre-fetched and stored in the cache, so when requests arrive, the system can serve from cache rather than querying the data source in real-time, thus ensuring both data freshness through periodic updates and improved performance through cached responses

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The in-memory cache acts as an intermediary between the data source and the OData client. It mediates requests by filtering out read operations that can be served from cache, while allowing write operations to propagate to the data source. This intermediary layer reduces direct queries to the data source, improving system performance while maintaining data integrity

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If data manipulation requests are handled by retrieving from data source, then data consistency is maintained, but processing time and system load increase

Engineering Contradiction:
Improvedata consistencyVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system maintains data consistency through preliminary actions by establishing a replication mechanism where cache updates are automatically propagated to the data source. When data is modified in the cache, the system pre-establishes the update path and executes the propagation, ensuring consistency without requiring real-time queries to the data source for every manipulation operation

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback mechanisms where the cache monitors for data changes and automatically updates itself from the data source when necessary. This feedback loop ensures that the cache remains synchronized with the data source without requiring manual intervention or full data retrieval for every manipulation request, thus reducing processing time while maintaining consistency

Inventive Principle:
Principle #23Feedback

3Productivity

If in-memory cache is used for all requests, then response time is reduced, but data freshness and reliability deteriorate

Engineering Contradiction:
Improveresponse timeVSAvoiddata freshness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system dynamically adjusts its behavior based on request types and data characteristics. It determines whether to serve from cache or query the data source based on factors like data volatility, request patterns, and cache availability. This dynamic approach allows the system to optimize response time for stable data while ensuring freshness for critical data, resolving the contradiction between speed and reliability

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes parameters such as cache validity periods, refresh intervals, and eviction policies based on data characteristics and workload patterns. By adjusting these parameters dynamically, the system can extend cache validity for read-heavy operations to improve response time, while implementing more aggressive refresh strategies for write-heavy data to maintain freshness, thus balancing both requirements

Inventive Principle:
Principle #35Parameter changes

4Measurement precision

If automatic formula updates are implemented, then data accuracy is improved, but system complexity and processing overhead increase

Engineering Contradiction:
Improvedata accuracyVSAvoidsystem complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The system implements self-service through automatic formula updates where the cache autonomously calculates and applies formula-based transformations when data is retrieved or updated. The system monitors data changes and automatically executes relevant formulas without external intervention, maintaining data accuracy while containing complexity within the cache layer rather than requiring complex external processing systems

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11663173B2Data map connectivity interface
Publication Date: 2023.05.30 DILLON SOFTWARE SERVICES LLC
  • US11663173B2 patent drawing
  • US11663173B2 patent drawing
  • US11663173B2 patent drawing

AI summary

Methods and systems for redirection of requests received by a service or an API are provided. According to one embodiment, a request, relating to a domain or a focal point of related data (e.g., an OData entity), is received from a client by a service (e.g., an OData service) operable to serve data from a data source or an in-memory cache. When the request involves manipulation of a portion of the data, automatic updating of values of the data that are dependent thereon is facilitated by directing fulfilment of the request to the cache; otherwise: it is determined whether to fulfill the request based on the in-memory cache. When the determination is affirmative, then the portion of the data is retrieved from the in-memory cache. When the determination is negative, then the portion of the data is retrieved from the data source.