Semi-Structured Data Ingestion in Columnar Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing columnar storage systems are inefficient for semi-structured data, as they require a priori knowledge of the schema to store and query data effectively, which is not feasible when dealing with diverse and unknown data schemas.

Innovation Solution

The system breaks down data into row groups with individual schemas, allowing for the storage of semi-structured data in a columnar format without prior knowledge of the schema, using techniques like encoding repetition and definition levels to efficiently manage nested data structures and handle heterogeneous records.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If columnar storage systems use a fixed schema approach to store data, then query efficiency is improved, but the system cannot handle semi-structured data with unknown or varying schemas

Engineering Contradiction:
Improvequery efficiencyVSAvoidschema flexibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic schema evolution by allowing row groups to be created with different schemas based on the actual data being ingested. Each row group maintains its own schema definition, enabling the system to adapt to varying data structures while preserving query efficiency through schema-aware processing. This resolves the contradiction by making the schema flexible rather than fixed, allowing the system to handle both structured and semi-structured data effectively.

Inventive Principle:
Principle #15Dynamics

2Adaptability or versatility

If the system creates a new row group for each unique schema, then schema diversity is supported, but the number of row groups increases reducing storage efficiency

Engineering Contradiction:
Improveschema diversity supportVSAvoidnumber of row groups
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent segments the data storage into row groups with individual schemas, allowing each segment to handle its specific data structure independently. This segmentation enables efficient storage of semi-structured data by creating row groups only when necessary, rather than forcing all data into a single schema. The segmentation principle resolves the contradiction by organizing data into manageable units that balance schema diversity with storage efficiency.

Inventive Principle:
Principle #1Segmentation

3Quantity of substance

If the system buffers records to reduce row group creation, then storage efficiency is improved, but query performance may degrade due to increased buffering complexity

Engineering Contradiction:
Improvestorage efficiencyVSAvoidbuffering management complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by pre-defining schemas for row groups before data ingestion. This allows the system to buffer records efficiently by knowing in advance which row group schema will accommodate incoming data, reducing the need for dynamic schema creation during buffering. The preliminary schema definition simplifies buffering management while maintaining storage efficiency, resolving the contradiction between storage efficiency and buffering complexity.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10866940B2Method, apparatus, and computer-readable medium for ingesting semi-structured data in a columnar format
Publication Date: 2020.12.15 MAGENTA SECURITY HOLDINGS LLC
  • US10866940B2 patent drawing
  • US10866940B2 patent drawing
  • US10866940B2 patent drawing

AI summary

An apparatus, computer-readable medium, and computer-implemented method for ingesting semi-structured data in a columnar format, including parsing a data record, the data record comprising semi-structured data including one or more data fields and one or more data values corresponding to the one or more data fields, generating a schema corresponding to the data record, the schema comprising the one or more data fields and one or more data types corresponding to the one or more data fields, determining whether the schema corresponding to the data record is homogenous with a schema corresponding to a current row group, wherein the current row group comprises one or more current column names and one or more current column types, and storing the data record as a new record in the current row group based at least in part on a determination that the schema is homogenous.