IP Library Granted Patent US 9,361,188
Granted Patent B2
US 9,361,188 · App. 14/324,485 · Granted Jun 7, 2016

Virtual database rewind

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 9,361,188
App. No.
14/324,485
Granted
Jun 7, 2016
Kind
B2
Abstract

A database storage system allows users to modify the state of a virtual database. The database storage system provides a respective virtual database (VDB) at a respective destination, the respective VDB having a first timeflow stored in a respective container. A user can send a request to rewind a VDB. The request identifies timeflow of the VDB and a state of the VDB associated with a timeflow. The database storage system modifies the virtual database to refer to database blocks associated with a snapshot of the VDB associated with the identified timeflow. The database storage system maintains a new timeflow for the modified VDB. The database storage system also allows the virtual database to be refreshed to a state of a source database. The source database can be a database stored in an external system or a virtual database stored within the database storage system.

Claims (50)

1. A computer-implemented method for rewinding a virtual database system, the method comprising:

storing, in a database storage system, a plurality of snapshots of a source database, a snapshot representing a point-in-time copy of database blocks of the source database, wherein one or more database blocks are shared across snapshots of the source database;

provisioning a virtual database based on database blocks of a snapshot of the source database;

maintaining, by the database storage system, one or more timeflows for the virtual database, each timeflow representing changes to the virtual database starting from an initial state of the virtual database, the representation of changes comprising snapshots of the virtual database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the virtual database;

receiving a request to rewind the virtual database to a previous state of the virtual database, the request identifying a timeflow of the virtual database and a target point in time associated with the identified timeflow,

rewinding the virtual database by modifying the virtual database to refer to database blocks of a snapshot of the virtual database associated with the timeflow, the snapshot of the virtual database saved before or at the target point in time; and

maintaining a new timeflow for the rewound virtual database, the new timeflow comprising representations of changes caused by subsequent updates to the rewound virtual database.

2. The computer-implemented method of claim 1 , wherein the previous state is a first state, the request to modify is the first request to modify, the target timeflow is a first timeflow, the point in time is a first point in time, the snapshot of the virtual database is the first snapshot, the method further comprising:

receiving a second request to further rewind the virtual database to a second state of the virtual database, the second state associated with a second target point in time of a second timeflow of the virtual database,

rewinding the virtual database again by modifying the virtual database to refer to database blocks of a second snapshot of the virtual database associated with the second timeflow, the second snapshot saved before or at the second target point in time.

3. The computer-implemented method of claim 1 , the method further comprising:

sending a request to shut down a process associated with the virtual database before rewinding the virtual database; and

sending a request to restart the process after rewinding the virtual database.

4. The computer-implemented method of claim 1 , wherein a timeflow of the virtual database comprises a first snapshot and a second snapshot, wherein the second snapshot shares a database block with the first snapshot if the database block is not modified between the point in time that the first snapshot was saved and the point in time that the second snapshot was saved.

5. The computer-implemented method of claim 1 , further comprising:

receiving a request to update data of a database block of a latest snapshot of a current timeflow of the virtual database; and

responsive to receiving the request to update the data, making a copy of the database block and updating the copy of the database block.

6. The computer-implemented method of claim 1 , wherein the representation of changes of a time flow comprises transaction logs representing updates to the virtual database between two snapshots, the method further comprising:

responsive to modifying the virtual database to refer to database blocks of the snapshot of the virtual database, applying one or more transaction logs to the modified virtual database to update the state of the modified virtual database to correspond to the target point in time.

7. The computer-implemented method of claim 1 , wherein the request to rewind the state of the virtual database to the previous state of the virtual database identifies the previous state by specifying a system change number of an update performed by the virtual database, the update associated with the identified timeflow.

8. The computer-implemented method of claim 1 , wherein the request to rewind the state of the virtual database to the previous state of the virtual database identifies the previous state by specifying a time value associated with the identified timeflow of the virtual database.

9. The computer-implemented method of claim 1 , wherein the virtual database is associated with a plurality of timeflows and wherein receiving the request to modify the state of the virtual database to the previous state of the virtual database identifies a timeflow from the plurality of timeflows.

10. The computer-implemented method of claim 1 , wherein one or more database blocks of the virtual database are shared with one or more other virtual databases provisioned by the database storage system.

11. A computer-implemented method for refreshing a virtual database system to a state of a source database system, the method comprising:

maintaining, by a database storage system, one or more timeflows for a source database, each timeflow comprising representations of changes to the source database starting from an initial state of the source database, the representations comprising snapshots of the source database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the source database;

provisioning, by the database storage system, a virtual database based on database blocks of a snapshot of the source database;

maintaining one or more timeflows for the virtual database, each timeflow comprising representations of changes to the virtual database starting from an initial state of the virtual database, the representations of changes comprising snapshots of the virtual database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the virtual database;

receiving a request to refresh the virtual database to a state of the source database, the request identifying a timeflow of the source database and a target point in time of the timeflow;

refreshing the virtual database, comprising, modifying the virtual database to refer to database blocks of a snapshot of the source database associated with the timeflow, the snapshot saved before or at the target point in time; and

maintaining a new timeflow for the refreshed virtual database, the new timeflow comprising representations of changes caused by subsequent updates to the refreshed virtual database.

12. The computer-implemented method of claim 11 , the method further comprising:

sending a request to shut down a process associated with the virtual database before refreshing the virtual database; and

sending a request to restart the process after refreshing the virtual database.

13. The computer-implemented method of claim 11 , wherein a timeflow of the virtual database comprises a first snapshot and a second snapshot, wherein the second snapshot shares a database block with the first snapshot if the database block is not modified between the point in time that the first snapshot was saved and the point in time that the second snapshot was saved.

14. The computer-implemented method of claim 11 , further comprising:

receiving a request to update data of a database block of a latest snapshot of a current timeflow of the virtual database; and

responsive to receiving the request to update the data, making a copy of the database block and updating the copy of the database block.

15. The computer-implemented method of claim 11 , wherein the representation of changes of a time flow comprises transaction logs representing updates to the virtual database between two snapshots, the method further comprising:

responsive to modifying the virtual database to refer to database blocks of the snapshot of the virtual database, applying one or more transaction logs to the modified virtual database to update the state of the modified virtual database to correspond to the target point in time.

16. The computer-implemented method of claim 11 , wherein the request to refresh the virtual database identifies the state of the source database by specifying a system change number of an update performed by the source database, the update associated with the identified timeflow.

17. The computer-implemented method of claim 11 , wherein the request to refresh the virtual database identifies the state of the source database by specifying a time value associated with the identified timeflow of the source database.

18. The computer-implemented method of claim 11 , wherein the source database is a virtual database associated with a plurality of timeflows and wherein receiving the request to refresh the virtual database identifies a timeflow from the plurality of timeflows.

19. The computer-implemented method of claim 11 , wherein the source database is a production database stored in an external system different from the source database system.

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

storing, in a database storage system, a plurality of snapshots of a source database, a snapshot representing a point-in-time copy of database blocks of the source database, wherein one or more database blocks are shared across snapshots of the source database;

provisioning a virtual database based on database blocks of a snapshot of the source database;

maintaining, by the database storage system, one or more timeflows for the virtual database, each timeflow representing changes to the virtual database starting from an initial state of the virtual database, the representation of changes comprising snapshots of the virtual database taken at different points in time, wherein one or more database blocks are shared across a plurality of snapshots of the virtual database;

receiving a request to rewind the virtual database to a previous state of the virtual database, the request identifying a timeflow of the virtual database and a target point in time associated with the identified timeflow,

rewinding the virtual database by modifying the virtual database to refer to database blocks of a snapshot of the virtual database associated with the timeflow, the snapshot of the virtual database saved before or at the target point in time; and

maintaining a new timeflow for the rewound virtual database, the new timeflow comprising representations of changes caused by subsequent updates to the rewound virtual database.

Assignments (17)
SECURITY INTEREST Recorded Apr 7, 2026
From: PERFORCE SOFTWARE, INC.; DELPHIX CORP.; AKANA, INC.; ROGUE WAVE SOFTWARE, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 075368/0968 →
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: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
To: DELPHIX CORP.
Reel/Frame 060737/0201 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 060738/0578 →
SECURITY INTEREST Recorded Aug 5, 2022
From: DELPHIX CORP.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 060734/0591 →
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 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047169/0863 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 1, 2018
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 047169/0901 →
SECURITY INTEREST Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047016/0544 →
SECURITY INTEREST Recorded Feb 28, 2017
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 041398/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2014
From: STEWART, MICHAEL JAMES; SUN, HUBERT KEN
To: DELPHIX CORP.
Reel/Frame 033254/0204 →