Single Data Class for In-Memory Tabular Storage in Strongly-Typed Languages

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Strongly-typed languages face challenges in efficiently storing and processing dynamic, user-defined data in-memory, as existing solutions like Expando and DataSet libraries are inefficient for tabular data and incompatible with frameworks like LINQ, requiring additional libraries and limiting functionality.

Innovation Solution

A single software class in a compiled language that allows for tabular data storage with a schema and key-reference system, enabling flexible in-memory data management, queryability, and integration with LINQ, while maintaining strong typing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a strongly-typed language uses predefined classes for data storage, then type safety and compile-time checking are improved, but flexibility to store dynamic user-defined data is worsened

Engineering Contradiction:
Improvetype safetyVSAvoidflexibility for dynamic data
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic data classes where the schema can be modified at runtime through methods like AddField, RemoveField, and RenameField. This allows the class structure to adapt to user-defined data requirements while maintaining the strongly-typed nature of the language, resolving the contradiction between type safety and flexibility.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent allows changing the parameters (fields) of a data class dynamically after instantiation. The schema is not fixed at compile-time but can be modified during runtime, enabling the same class to handle different data structures while maintaining type safety through the strongly-typed language framework.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If existing solutions like Expando class are used for dynamic data storage, then flexibility is improved, but efficiency for tabular data storage and compatibility with LINQ is worsened

Engineering Contradiction:
Improvedynamic data storage flexibilityVSAvoidprocessing efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent segments the data storage system into a structured schema definition part and a dynamic data population part. The schema defines the tabular structure efficiently, while the dynamic fields are added within that structure, allowing both LINQ compatibility and flexibility without the overhead of completely dynamic solutions like Expando.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent creates a universal data class that can serve multiple purposes: it works with LINQ for efficient querying, supports dynamic field addition for flexibility, and maintains tabular data structure for efficiency. This multi-functional design resolves the contradiction between flexibility and processing efficiency.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If DataSet library is used for in-memory tabular storage, then tabular data efficiency is improved, but compatibility with modern LINQ and ORM tools is worsened

Engineering Contradiction:
Improvetabular data processing efficiencyVSAvoidcompatibility with LINQ and ORM
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent acts as an intermediary between the efficient tabular storage needs of DataSet and the modern LINQ/ORM requirements. It provides a data class structure that LINQ can query efficiently while maintaining the tabular organization needed for data processing, bridging the gap between legacy efficiency and modern compatibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Productivity

If new data libraries are created for in-memory processing, then in-memory efficiency is improved, but integration with existing strongly-typed language frameworks is worsened

Engineering Contradiction:
Improvein-memory processing speedVSAvoidlibrary integration complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges the benefits of in-memory processing libraries with the existing strongly-typed language framework. By creating a data class that works natively with LINQ and other framework tools, it eliminates the need for separate library ecosystems, reducing integration complexity while maintaining in-memory efficiency.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS10977008B1Single data class for in-memory creation and programmatic access of arbitrary data in a strongly-typed computer programming language
Publication Date: 2021.04.13 FIRST CAPITOL CONSULTING INC
  • US10977008B1 patent drawing
  • US10977008B1 patent drawing
  • US10977008B1 patent drawing

AI summary

A method and computer program product are provided for defining a dynamic data storage class in-memory using a strongly-typed compiled language, and accessing data in the memory. A schema is defined of one or more key-value pairs of field names and data types, wherein the schema represents columns of a table in the memory. A table key is declared that represents the table in the memory. The dynamic data storage class is instantiated, using the strongly-typed compiled language, by passing the table key. Each instantiation of the dynamic data storage class is an individual row of the table in the memory. Fields of the dynamic data storage class are accessed by an overloaded indexer that uses strings as the field names in the schema.