Copy-on-write Document Versioning with Range-based Node Segmentation
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
2Adaptability or versatility
If deep copy implementation of object versioning is used, then whole-object versioning semantics are maintained, but editing performance becomes slower
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.
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.
3Quantity of substance
If incremental changes approach is used, then storage space is saved, but computational cost to reconstruct versions increases
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.
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.
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
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.
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.
Data Source
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.


