Sparsely Populated Data Object via Event-Driven Subscription

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software applications face performance issues when accessing large data objects, as they often load the entire object to retrieve a small portion of its properties, and may not be aware of dynamic changes in data providers at runtime.

Innovation Solution

A publication/subscription model is used to create a virtualized data object, where subscribing routines process and update properties independently, allowing for dynamic population and configuration at runtime without recompiling code, enabling efficient data retrieval and handling of changes in data providers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the entire data object is loaded to access a portion of its properties, then the requested data can be retrieved, but memory usage and processing overhead increase significantly

Engineering Contradiction:
Improvedata retrieval efficiencyVSAvoidmemory usage
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The data object is segmented into individual properties that can be populated independently. Instead of loading the entire data object, only the specific properties that are bound and requested are populated by subscribing routines, reducing memory usage while maintaining access to needed data.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The necessary properties are extracted from the larger data object context. The system identifies and populates only the specific properties that are bound and requested, separating them from the rest of the data object to avoid loading unnecessary data into memory.

Inventive Principle:
Principle #2Taking out (Extraction)

2Adaptability or versatility

If the application is designed with fixed data providers, then the code structure remains stable, but the application cannot adapt to dynamic changes in data sources at runtime

Engineering Contradiction:
Improveruntime configuration flexibilityVSAvoidcode structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system transitions from static data provider configuration to dynamic runtime configuration. Subscribing routines are identified and invoked at runtime based on the specific data object being accessed, allowing the application to adapt to different data sources without recompilation while maintaining a clean code structure through event-driven architecture.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

An event-driven intermediary layer is introduced between the application code and data providers. The system uses events and subscriptions as intermediaries to dynamically connect with various data sources at runtime, allowing flexibility without directly coupling the code to specific data provider implementations.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Ease of operation

If all properties of a data object are populated upfront, then data access is simplified, but processing overhead and memory consumption increase

Engineering Contradiction:
Improvedata access simplicityVSAvoidprocessing overhead
Core Design Contradiction:
Ease of operationVSLoss of energy

Solution Approach 1:

Instead of populating all properties of a data object upfront, the system applies partial action by populating only the specific properties that are bound and requested. This reduces processing overhead and memory consumption while maintaining ease of access for the needed data through the binding mechanism.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8949857B2Value provider subscriptions for sparsely populated data objects
Publication Date: 2015.02.03 ZHIGU HLDG
  • US8949857B2 patent drawing
  • US8949857B2 patent drawing
  • US8949857B2 patent drawing

AI summary

A calling routine may identify portions of a data object that may be populated by other executable routines by creating a property requested event. An event may be created for the requested property and one or more subscribing routines may launch. The subscribing routines may process separately from the calling routine and return property values, which in turn may create a property changed event, which may be subscribed to by the calling routine. The calling routine may then process the requested data. In one embodiment, a data object may be populated on a property-by-property basis by various subscribing routines, creating a sparsely populated data object that may be updated dynamically by routines identified at runtime.