Container Image Dependency Graph for Storage Optimization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current container image representation in image registries results in large file sizes due to the inclusion of all dependencies, leading to storage and performance issues. Additionally, changes to a single file within a layer require re-creation and re-uploading of the entire layer, causing data duplication and increased bandwidth usage.
Innovation Solution
The method involves defining and storing units of image data as compressible nodes in a dependency graph, allowing for efficient data sharing and reduction of data duplication. These compressed units are represented as nodes in a dependency graph, enabling parallel processing and conditional logic applications.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If container images are represented as sequential layers with all dependencies included, then completeness of container functionality is ensured, but file size and storage requirements increase significantly
Solution Approach 1:
The container image is segmented into multiple layers, where each layer represents a specific set of dependencies or files. This segmentation allows the system to store and transfer only the necessary layers rather than the entire image, reducing file size while maintaining functionality completeness.
Solution Approach 2:
Layers are nested within the container image structure, with each layer containing specific dependencies. Smaller layers can be nested within larger ones, allowing for efficient storage where common dependencies are shared across multiple container images through the layer hierarchy.
2Productivity
If a single file within a layer is changed, then the container image can be updated, but the entire layer must be re-created and re-uploaded causing data duplication
Solution Approach 1:
When a single file within a layer needs to be updated, the system extracts only that specific file or a smaller sub-layer containing the changed file, rather than re-creating the entire layer. This extracted portion is then uploaded independently, avoiding data duplication of the unchanged portions.
Solution Approach 2:
The layer is further segmented into smaller units or sub-layers, allowing granular updates. When a file changes, only the relevant sub-layer is modified and re-uploaded, while other sub-layers remain intact and are not duplicated.
3Quantity of substance
If layers are stored as single compressed units, then storage efficiency is improved, but specific changes within layers cannot be detected
Solution Approach 1:
While layers are stored as compressed units for storage efficiency, each layer is segmented into smaller sub-layers or file groups. This segmentation enables change detection at a granular level by comparing specific sub-layers between versions, while the overall layer remains compressed for storage efficiency.
Solution Approach 2:
The system adds a dimensional layer of indexing and metadata that tracks file locations within compressed layers. This additional dimension enables change detection without requiring decompression, as the indexing structure allows direct comparison of specific files or sub-layers.
4Reliability
If the entire layer is re-uploaded when a single file changes, then data consistency is maintained, but bandwidth usage increases
Solution Approach 1:
The system extracts only the specific file or minimal sub-layer that contains the changed file, rather than re-uploading the entire layer. This extracted portion is uploaded independently to maintain data consistency, significantly reducing bandwidth usage compared to full layer re-upload.
Solution Approach 2:
The upload process is made dynamic by determining the minimal necessary portion to upload based on the specific file changes. The system adaptively selects only the required sub-layers or files for re-upload, optimizing bandwidth usage while maintaining consistency where needed.
Data Source
AI summary
A computer-implemented method, system, and computer program product are provided. A processor defines and stores units of image data of a container image, where the units of image data are compressible. A processor represents the units as nodes in a dependency graph for a container image, including one or more nodes at a dependency level in the dependency graph.


