Sparsely Populated Data Object via Event-Driven Subscription
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
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
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.
Data Source
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.


