IP Library Granted Patent US 10,025,528
Granted Patent B2
US 10,025,528 · App. 15/411,476 · Granted Jul 17, 2018

Managing transformations of snapshots in a storage system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,025,528
App. No.
15/411,476
Granted
Jul 17, 2018
Kind
B2
Abstract

A storage system executes transform scripts to transform data stored in a source snapshot to obtain transformed snapshot. A transform script may be used to upgrade data stored in a snapshot from a version of an application to a newer version of the application. The storage system stores intermediate snapshots during execution of a transform scripts. The storage system reuses data stored during execution of transform scripts to optimize execution of newer transform scripts. For example, the storage system identifies a previously executed transform script having a matching prefix of transform operations and reuses an intermediate snapshot obtained by executing the matching prefix. The storage system processes the intermediate snapshot by executing the remaining transform operations of the new transform script.

Claims (57)

1. A method for transforming snapshots, the method comprising:

storing, in a storage system, a plurality of source snapshots, wherein each source snapshot shares data blocks with one or more other source snapshots;

receiving one or more transform scripts for transforming data of a source snapshot, each transform script comprising a sequence of transform operations;

executing the one or more transform scripts, the executing comprising, for each transform script, storing one or more intermediate snapshots, each intermediate snapshot stored after applying one or more transform operations of the transform script to a previously stored intermediate snapshot;

receiving a new transform script for executing using the source snapshot, the new transform script comprising a new sequence of transform operations;

identifying a previously executed transform script, the previously executed transform script with a sequence of transform operations having a prefix matching with the new sequence;

identifying an intermediate snapshot saved after executing the matching prefix of the identified transform script; and

executing transform operations of the new transform script occurring after the matching prefix using the intermediate snapshot as input to obtain a result of execution of the second transform script.

2. The method of claim 1 , wherein identifying the previously executed transform script comprises, selecting a transform script that was modified to obtain the new transform script.

3. The method of claim 2 , further comprising:

associating each transform script with a version, wherein identifying the previously executed transform script comprises, selecting a transform script having a version occurring before the version of the new transform script.

4. The method of claim 1 , wherein identifying the previously executed transform script comprises:

determining for each of the one or more previously executed transform script, whether the previously executed transform script has a prefix of sequence of transform operations that matches a prefix of sequence of transform operations of the new transform script.

5. The method of claim 4 , further comprising:

responsive to determining that a plurality of previously executed transform script match the new transform script, selecting a previously executed transform script having the longest matching prefix.

6. The method of claim 1 , wherein executing a transform script comprises:

determining a metric value indicative of an amount of processing performed since a previous intermediate snapshot was saved; and

determining whether to save another intermediate snapshot responsive to the metric value exceeding a threshold value.

7. The method of claim 1 , wherein the snapshot stores a plurality of database blocks and the transform script comprises one or more database commands, wherein executing a transform script comprises:

creating a virtual database comprising a file structure pointing at database blocks of the snapshot; and

executing the one or more database commands of the transform script against the virtual database.

8. The method of claim 1 , wherein the source snapshot stores data configured to be executed by a first version of an application and the transform script modifies the data of the source snapshot such that the modified data is configured to be executed by a second version of the application.

9. The method of claim 8 , wherein the application is a database system.

10. The method of claim 1 , wherein the source snapshot stores data configured to be executed by a first application offered by a first vendor and the transform script modifies the data of the source snapshot such that the modified data is configured to be executed by a second application offered by a second vendor.

11. A non-transitory computer-readable storage medium storing instructions for:

storing, in a storage system, a plurality of source snapshots, wherein each source snapshot shares data blocks with one or more other source snapshots;

receiving one or more transform scripts for transforming data of an input source snapshot, each transform script comprising a sequence of transform operations;

executing the one or more transform scripts, the executing comprising, for each transform script, storing one or more intermediate snapshots, each intermediate snapshot stored after applying one or more transform operations of the transform script to a previously stored intermediate snapshot;

receiving a new transform script for executing using the source snapshot, the new transform script comprising a new sequence of transform operations;

identifying a previously executed transform script, the previously executed transform script with a sequence of transform operations having a prefix matching with the new sequence;

identifying an intermediate snapshot saved after executing the matching prefix of the identified transform script; and

executing the transform operations of the new transform script occurring after the matching prefix using the intermediate snapshot as input to obtain a result of execution of the second transform script.

12. The non-transitory computer-readable storage medium of claim 11 , wherein identifying the previously executed transform script comprises, selecting a transform script that was modified to obtain the new transform script.

13. The non-transitory computer-readable storage medium of claim 12 , further comprising:

associating each transform script with a version, wherein identifying the previously executed transform script comprises, selecting a transform script having a version occurring before the version of the new transform script.

14. The non-transitory computer-readable storage medium of claim 11 , wherein identifying the previously executed transform script comprises:

determining for each of the one or more previously executed transform script, whether the previously executed transform script has a prefix of sequence of transform operations that matches a corresponding prefix of sequence of transform operations of the new transform script.

15. The non-transitory computer-readable storage medium of claim 14 , further comprising:

responsive to determining that a plurality of previously executed transform script match the new transform script, selecting a previously executed transform script having the longest matching prefix.

16. The non-transitory computer-readable storage medium of claim 11 , wherein executing a transform script comprises:

determining a metric value indicative of an amount of processing performed since a previous intermediate snapshot was saved; and

determining whether to save another intermediate snapshot responsive to the metric value exceeding a threshold value.

17. The non-transitory computer-readable storage medium of claim 11 , wherein the snapshot stores a plurality of database blocks and the transform script comprises one or more database commands, wherein executing a transform script comprises:

creating a virtual database comprising a file structure pointing at database blocks of the snapshot; and

executing the one or more database commands of the transform script against the virtual database.

18. The non-transitory computer-readable storage medium of claim 11 , wherein the source snapshot stores data configured to be executed by a first version of an application and the transform script modifies the data of the source snapshot such that the modified data is configured to be executed by a second version of the application.

19. The non-transitory computer-readable storage medium of claim 11 , wherein the source snapshot stores data configured to be executed by a first application offered by a first vendor and the transform script modifies the data of the source snapshot such that the modified data is configured to be executed by a second application offered by a second vendor.

20. A computer system, comprising:

an electronic processor; and

a non-transitory computer-readable storage medium storing instructions for:

storing, in a storage system, a plurality of source snapshots, wherein each source snapshot shares data blocks with one or more other source snapshots;

receiving one or more transform scripts for transforming data of an input source snapshot, each transform script comprising a sequence of transform operations;

executing the one or more transform scripts, the executing comprising, for each transform script, storing one or more intermediate snapshots, each intermediate snapshot stored after applying one or more transform operations of the transform script to a previously stored intermediate snapshot;

receiving a new transform script for executing using the source snapshot, the new transform script comprising a new sequence of transform operations;

identifying a previously executed transform script, the previously executed transform script with a sequence of transform operations having a prefix matching with the new sequence;

identifying an intermediate snapshot saved after executing the matching prefix of the identified transform script; and

executing the transform operations of the new transform script occurring after the matching prefix using the intermediate snapshot as input to obtain a result of execution of the second transform script.

Assignments (16)
FIRST LIEN PATENT SECURITY AGREEMENT Recorded May 24, 2024
From: DELPHIX CORP.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 067528/0384 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded May 17, 2024
From: DELPHIX CORP.
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 067453/0344 →
RELEASE OF SECURITY INTEREST Recorded Mar 22, 2024
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: DELPHIX CORP.
Reel/Frame 066869/0540 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 060738/0578 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
To: DELPHIX CORP.
Reel/Frame 060737/0201 →
SECURITY INTEREST Recorded Aug 5, 2022
From: DELPHIX CORP.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 060734/0591 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 060738/0429 →
SECURITY INTEREST Recorded Jan 10, 2020
From: DELPHIX CORP.
To: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 051482/0043 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 9, 2020
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: DELPHIX CORP.
Reel/Frame 051532/0264 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SCHEDULE TO REMOVE APPLICATION NUMBERS 10025528 AND 10083196, AND REPLACE WITH PATENT NUMBERS 10025528 AND 10083196 PREVIOUSLY RECORDED ON REEL 047169 FRAME 0863. ASSIGNOR(S) HEREBY CONFIRMS THE AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT. Recorded Jan 6, 2020
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 051485/0422 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SCHEDULE TO REMOVE APPLICATION NUMBERS 10025528 AND 10083196, AND REPLACE WITH PATENT NUMBERS 10025528 AND 10083196 PREVIOUSLY RECORDED ON REEL 047016 FRAME 0544. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jan 6, 2020
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 051485/0438 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 9, 2019
From: DELPHIX CORP.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 050673/0234 →
FIRST SUPPLEMENT TO AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 9, 2019
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 050673/0209 →
SECURITY INTEREST Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047016/0544 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047169/0863 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2017
From: SUN, HUBERT KEN; SIDEN, CHRISTOPHER G.; CACKETT, KYLE
To: DELPHIX CORPORATION
Reel/Frame 043149/0560 →
Cited By (2)
US 12,423,277 US 12,443,577