Server-Side Data Abstraction Layer for Distributed Column Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data manipulation strategies face challenges in efficiently handling data from disparate, non-uniform sources and lack scalability, particularly on client devices with limited processing and storage capabilities.

Innovation Solution

The implementation of a scalable frame data structure, SFrame, which is an immutable, column-store database with full query capabilities, allowing for efficient sub-selection of columns and distributed storage and processing across multiple servers, enabling efficient data manipulation and graph construction from diverse data sources.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If data is stored and processed on client devices, then processing and storage capabilities are sufficient, but client devices lack the processing and storage capabilities of larger server computing devices

Engineering Contradiction:
Improveprocessing and storage capabilitiesVSAvoiddata manipulation complexity
Core Design Contradiction:
Quantity of substanceVSEase of operation

Solution Approach 1:

A server-side data abstraction layer is introduced as an intermediary between client devices and remote servers. This layer provides familiar data structures (DataFrames, Series) and manipulation operations to clients, while handling the complexity of remote data access, distributed processing, and data integration automatically. Users can manipulate remote data as if it were local without needing to understand the underlying distributed system complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If data from multiple disparate sources is combined, then data integration is achieved, but it is difficult to manipulate data obtained from two or more disparate, non-uniform data sources in an efficient way

Engineering Contradiction:
Improvedata source compatibilityVSAvoiddata manipulation efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The system transforms heterogeneous data from disparate sources (CSV files, SQL databases, flat files) into a unified homogeneous structure using standardized DataFrames and Series objects. All data sources are converted to the same internal representation with consistent data types, indexing, and manipulation operations, enabling efficient processing regardless of the original source format.

Inventive Principle:
Principle #33Homogeneity

Solution Approach 2:

The data abstraction layer provides universal DataFrames and Series structures that can represent and manipulate data from any source type through a single unified interface. The same manipulation operations (filtering, sorting, joining, aggregation) work uniformly across data from CSV files, databases, and other sources without requiring source-specific code.

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

3Productivity

If data is stored in traditional row-based databases, then complete rows are stored together, but efficient sub-selection of columns is not possible without loading remaining columns

Engineering Contradiction:
Improvecolumn sub-selection efficiencyVSAvoiddata loading volume
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The system segments data storage into columnar format where each column is stored separately in one or more files, rather than storing complete rows together. This segmentation enables the server to load and process only the specific columns requested by the client, avoiding the need to transfer entire rows even when only a subset of columns is needed, thereby reducing data loading volume and improving efficiency.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10331740B2Systems and methods for operating a server-side data abstraction layer
Publication Date: 2019.06.25 APPLE INC
  • US10331740B2 patent drawing
  • US10331740B2 patent drawing
  • US10331740B2 patent drawing

AI summary

A method receives a first request from a client object at a device. The first request specifies a data source. In response to the first request, the method uploads data from the data source, stores the data as a plurality of first columns, and instantiates a first server object that provides access to the first columns. The method later receives a second request from the client object. The second request specifies a transformation of the data. In response to the second request, the method stores one or more additional columns and instantiates a second server object that provides access to the additional columns and one or more of the first columns. Each of the additional columns is constructed from the first columns according to the requested transformation, and each of the additional columns includes a plurality of data values all having the same data type.