Parallel Incremental Backup Using Bucket Subgroup Prefetching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The Amazon S3 API for listing objects in a bucket is single-threaded, leading to bottlenecks and slow performance when performing incremental backups of large object storage buckets, especially when change tracking is not available, resulting in prolonged backup times.

Innovation Solution

The technique involves dividing the object storage bucket into subgroups using partition identifiers derived from checkpoint files, assigning prefetchers to each subgroup to traverse and identify differences in parallel, and ingesting new data in parallel, ensuring entries are sorted lexicographically to facilitate efficient incremental backups.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the S3 API is used to list objects in a bucket, then the backup process can identify objects to backup, but the single-threaded API calls cause bottlenecks and slow performance

Engineering Contradiction:
Improvebackup speedVSAvoidbackup time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent divides the object storage bucket into multiple subgroups using partition identifiers, allowing parallel processing of object listing operations. Each thread handles a specific subgroup, transforming the single-threaded sequential API calls into multi-threaded parallel operations, thereby resolving the bottleneck and improving backup speed.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a partitioning dimension to the traditional sequential object listing process. By adding partition identifiers and organizing objects into subgroups across multiple dimensions, the system enables concurrent API calls from different threads, effectively adding a parallel processing dimension to overcome the single-threaded limitation.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Quantity of substance

If the API is called repeatedly to obtain all objects, then complete object listing is achieved, but the cumulative time consumption increases significantly

Engineering Contradiction:
Improvenumber of objects processedVSAvoidtotal API call time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent segments the complete object listing task into multiple smaller tasks by dividing objects into subgroups. Each thread performs fewer API calls for its assigned subgroup, and these operations execute concurrently. This segmentation strategy reduces the total time consumption while maintaining complete object processing.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent ensures continuous useful action by having multiple threads simultaneously performing object listing operations on different subgroups. While one thread is processing its subgroup, other threads are concurrently processing their respective subgroups, eliminating idle waiting time and maintaining continuous productive work throughout the backup process.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS12572427B2Parallelization of incremental backups
Publication Date: 2026.03.10 COHESITY INC
  • US12572427B2 patent drawing
  • US12572427B2 patent drawing
  • US12572427B2 patent drawing

AI summary

An assigned subgroup that includes a plurality of entries is traversed by a prefetcher. It is determined that an expected number of entries associated with the assigned subgroup have been traversed. In response to determining that expected number of entries associated with the assigned subgroup have been traversed, it is determined that a last read entry associated with the assigned subgroup does not correspond to a last entry associated with the assigned subgroup. The prefetcher is preempted by stopping the prefetcher from obtaining a list of entries associated with a remaining portion of the assigned subgroup.