Copy-on-write Document Versioning with Range-based Node Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data versioning techniques, such as deep copy and incremental changes, face inefficiencies in storage and editing due to redundant data and high computational costs, particularly in scenarios with large data objects undergoing small revisions, and struggle to support true whole-object semantics for editing and retrieval.

Innovation Solution

The implementation of copy-on-write versioning using a range-versioning mechanism, where each node of a data object maintains non-overlapping version ranges, allowing for efficient storage and retrieval by making copies on an as-needed basis and using a version accumulator structure to manage version values.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If deep copy implementation of object versioning is used, then ability to edit older versions is supported, but storage space and index space are consumed by redundant copies

Engineering Contradiction:
Improveability to edit older versionsVSAvoidstorage space
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent segments the data object into nodes, where each node can be independently versioned. Instead of copying the entire object for each version, only the changed nodes are copied and associated with specific version ranges. This allows efficient storage while maintaining the ability to reconstruct any version by assembling the relevant node copies.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements a nested versioning structure where nodes contain version information and can be associated with multiple version ranges. The version accumulator structure stores version values, and node copies are nested within the object graph, allowing compact representation of multiple versions without redundant storage of unchanged portions.

Inventive Principle:
Principle #7Nested doll (Nesting)

2Adaptability or versatility

If deep copy implementation of object versioning is used, then whole-object versioning semantics are maintained, but editing performance becomes slower

Engineering Contradiction:
Improvewhole-object versioning semanticsVSAvoidediting performance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

By segmenting the object into versioned nodes, the patent enables efficient editing of individual nodes without requiring deep copies of the entire object. Each node maintains its own version history and can be edited independently, preserving whole-object semantics while dramatically improving editing performance.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces dynamic versioning where nodes can be associated with different version ranges and are dynamically assembled based on the requested version. This allows the system to adaptively reconstruct only the necessary portions of the object for each version, maintaining semantic integrity while optimizing performance.

Inventive Principle:
Principle #15Dynamics

3Quantity of substance

If incremental changes approach is used, then storage space is saved, but computational cost to reconstruct versions increases

Engineering Contradiction:
Improvestorage spaceVSAvoidcomputational cost
Core Design Contradiction:
Quantity of substanceVSPower

Solution Approach 1:

The patent segments changes into node-level operations, where each node tracks its own version history. This allows efficient reconstruction of versions by only processing and assembling the changed nodes rather than reconstructing the entire object from incremental deltas, significantly reducing computational cost.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary versioning at the node level, where each node is versioned independently as it is created or modified. This preliminary action eliminates the need for expensive post-hoc reconstruction operations, as the version information is already prepared and stored in the version accumulator structure.

Inventive Principle:
Principle #10Preliminary action

4Quantity of substance

If node-level versioning is used, then storage efficiency is improved, but ability to retrieve specific versions of the entire object is compromised

Engineering Contradiction:
Improvestorage efficiencyVSAvoidversion retrieval capability
Core Design Contradiction:
Quantity of substanceVSLoss of information

Solution Approach 1:

The patent merges the versioned nodes with a version accumulator structure that stores version values and associates node copies with specific version ranges. This merging allows the system to efficiently retrieve complete versions of objects by assembling the relevant node copies based on the requested version, maintaining full version retrieval capability while preserving storage efficiency.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent makes the node versioning mechanism universal by allowing nodes to be associated with multiple version ranges and by implementing a unified version accumulator structure that handles both storage and retrieval operations. This multi-functional approach enables efficient storage while providing comprehensive version retrieval capabilities for any requested version.

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

Data Source

PatentUS7627615B2Copy-on-write versioning of documents
Publication Date: 2009.12.01 ORACLE INT CORP
  • US7627615B2 patent drawing
  • US7627615B2 patent drawing
  • US7627615B2 patent drawing

AI summary

Approach for versioning of documents is described. A version accumulator structure stores one or more version values indicating different versions of a data object. The data object is decomposable into a plurality of nodes. One or more copies of each node of the plurality of nodes are stored, where the one or more copies are associated with non-overlapping version ranges. A first request to perform a change to the data object is received. The first request specifies an effective version value for the change, which involves a particular node. The change is performed based on the effective version value and without making a deep copy of the data object. A second request to retrieve a certain version of the data object is received. The certain version is retrieved based on the version ranges associated with the one or more copies of each node of the plurality of nodes.