# US 10,503,713 B1 · Criterion-based retention of data object versions

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,713 B1
- Document ID: US10503713B1
- Status: Granted
- Kind: B1
- Application number: 14/281,792
- Filed: 2014-05-19
- Granted: 2019-12-10
- Earliest claimed: 2014-05-19
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Praveen Kumar Gattu; Aykud Gonen; Jonathan Jorge Nadal; Abhilasha Seth; Joseph Thomas Selman
- Web page: https://patentgrep.com/patent/US10503713B1

## CPC

- G06F 16/219: {Managing data history or versioning (querying versioned data G06F16/2474; querying temporal data G06F16/2477)}
- G06F 16/125: {characterised by the use of retention policies (retention policies for HSM systems G06F16/185)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and apparatus for criterion-based retention of data object versions are disclosed. In the method and apparatus, a plurality of keys are sorted in accordance with an ordering scheme, whereby a key of the plurality of keys has an associated version of a data object and a timestamp. The key is inspected in accordance with the ordering scheme to determine based at least in part on the timestamp whether a criterion for performing an action on the associated version of the data object is satisfied. If the criterion is satisfied, a marker key is added to the plurality of keys, whereby the marker key precedes the inspected key according to the ordering scheme and indicates that the criterion is satisfied.

## Claims

### Claim 1

A computer-implemented method for managing storage of data object versions, comprising:
under the control of one or more computer systems configured with executable instructions,
for a data object having a plurality of versions including a current version and one or more non-current versions, receiving a policy including a current version age parameter for the current version and a non-current timespan parameter for the one or more non-current versions, the current version age parameter specifying a first time limit for determining whether a designation of the current version is to be changed to a non-current version, the non-current timespan parameter specifying a second time limit for use in determining whether a non-current version of the one or more non-current versions is to be removed from storage;
on a condition that a first period of time elapsing from a creation time of the current version exceeds the first time limit, causing the current version to be designated as the non-current version; and
for the non-current version of the one or more non-current versions, on a condition that a second period of time elapsing from a creation time of a successor of the non-current version exceeds the second time limit, removing the non-current version from storage.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the successor of the non-current version of the one or more non-current versions is at least one of the current version or a second non-current version of the one or more non-current versions.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein:
the successor of the non-current version of the one or more non-current versions is a version of the plurality of versions of the data object; and
the non-current version of the one or more non-current versions is designated as non-current due at least in part to a creation of the version of the plurality of versions of the data object.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein the creation time of the current version is an upload initiation time or an upload completion time of the current version.

### Claim 5

A system, comprising:
at least one computing device having executable instructions that, as a result of being executed by one or more processors, implement one or more services to:
identify that a version of a data object, of a plurality of versions of the data object, is eligible for a first action to be taken, the version of the data object associated with a first key that is retained by the one or more services in accordance with a policy indicating a lifespan parameter specifying a first limit for determining a designation of the version of the data object as current;
create a second key based at least in part on identifying that the version of the data object is eligible for the first action and retain the second key together with the first key, the second key associated with a timestamp; and
perform, based at least in part on the timestamp and the lifespan parameter, a second action to the version of the data object.

### Claim 6 (depends on 5)

The system of claim 5, wherein identifying that the version of the data object is eligible for the first action to be taken is based at least in part on a determination that a measure of time that elapsed from another timestamp associated with the version of the data object exceeded the first limit.

### Claim 7 (depends on 6)

The system of claim 6, wherein the other timestamp is a creation time of the version of the data object that is determined based at least in part on an initiation time of an upload of the version of the data object.

### Claim 8 (depends on 5)

The system of claim 5, wherein the second key is constructed to prevent creation of a duplicate of the second key.

### Claim 9 (depends on 5)

The system of claim 5, wherein the one or more services are further configured to take the second action on the version of the data object on a condition that a measure of time that elapsed from the timestamp of the second key is greater than the lifespan parameter.

### Claim 10 (depends on 5)

The system of claim 5, wherein the one or more services are further configured to remove the second key after the second action is performed to the version of the data object.

### Claim 11 (depends on 5)

The system of claim 5, wherein the executable instructions that cause the one or more services to perform the second action further cause the one or more services to remove access to the version of the data object from the one or more services.

### Claim 12 (depends on 5)

The system of claim 5, wherein the executable instructions that cause the one or more services to identify that the version of the data object is eligible for the first action to be taken further cause the one or more services to determine that the version of the data object does not have an outstanding portion that is pending receipt by the one or more services.

### Claim 13

A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by one or more processors of a computer system, cause the computer system to at least:
sort a plurality of keys associated with a plurality of versions of a data object in accordance with an ordering scheme, a key of the plurality of keys associated with a timestamp;
determine, based at least in part on a policy indicating a first age parameter and a second age parameter, the timestamp, and the ordering scheme, for the key of the plurality of keys whether a criterion for performing one or more actions on an associated version of the data object is satisfied; and
in response to determining that the criterion is satisfied, add a marker key to be stored with the plurality of keys, the marker key being located adjacent to the key according to the ordering scheme and indicating that the criterion is satisfied for performance of a deletion action to at least the associated version of the data object.

### Claim 14 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the criterion is satisfied on a condition that the associated version of the data object does not have an outstanding portion that is pending receipt.

### Claim 15 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein determining whether the criterion is satisfied further includes determining whether a measure of time elapsing from the timestamp exceeds a first age parameter.

### Claim 16 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein performing the one or more actions on the associated version of the data object further include causing the version of the data object to become non-current.

### Claim 17 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein:
the executable instructions further comprise instructions that, when executed by the one or more processors, cause the computer system to scan the plurality of keys according to the ordering scheme to calculate for the key of the plurality of keys a non-current timespan associated with the key; and
the non-current timespan is calculated as a measure of time that elapsed from a timestamp of a succeeding key in accordance with the ordering scheme.

### Claim 18 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein the instructions further comprise instructions that, when executed by the one or more processors, cause the computer system to take one or more further actions on the key on a condition that the non-current timespan exceeds a second age parameter indicated in the policy.

### Claim 19 (depends on 18)

The non-transitory computer-readable storage medium of claim 18, wherein the one or more further actions include deleting the key and the associated version of the data object or locating the associated version of the data object to another storage service.

### Claim 20 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein:
inspecting the key of the plurality of keys is performed periodically; and
the marker key or a timestamp associated with the marker key is determined based at least in part on a time of performing the inspecting.
