IP Library Granted Patent US 8,468,174
Granted Patent B1
US 8,468,174 · App. 13/301,448 · Granted Jun 18, 2013

Interfacing with a virtual database 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 8,468,174
App. No.
13/301,448
Granted
Jun 18, 2013
Kind
B1
Abstract

User interactions with a database storage system allow creation of virtual databases based on point-in-time copies associated with a source database. Multiple point-in-time copies are obtained for each source database. A point-in-time copy retrieves data changed in the source database since the retrieval of a previous point-in-time copy. A virtual database (VDB) is created by creating a set of files in the data storage system and mounting the files on a database server allowing the database server to access the files. User interactions allow the user to specify the source database, a point in time associated with the source database and a destination server to create the virtual database. User input can specify other attributes associated with the virtual database including the file paths, database parameters etc. The user can specify schedules of various actions, including making and retention of point-in-time copies.

Claims (139)

1. A method of creating a virtual database system, the method comprising:

receiving information identifying a source database for providing data for storage in a first virtual database and a second virtual database being created;

receiving information identifying a first point in time, such that the source database comprises information stored prior to the first point in time;

receiving information identifying a first destination database server for accessing the first virtual database being created; and

creating the first virtual database on a storage system storing a plurality of point-in-time copies of the source database, the point-in-time copies comprising database blocks such that at least some of the database blocks are associated with multiple point-in-time copies of the source database, the creating of the first virtual database comprising:

creating a first set of files for the first virtual database, each file in the first set of files linked with a first set of database blocks comprising information stored in the source database prior to the first point in time; and

mounting the first set of files on the first destination database server allowing the first destination database server to read from and write to the first set of files;

receiving information identifying a second point in time, such that the source database comprises information stored prior to the second point in time;

receiving information identifying a second destination database server for accessing the second virtual database being created; and

creating the second virtual database on the storage system, the creating of the second virtual database comprising:

creating a second set of files for the second virtual database, each file in the second set of files linked with a second set of database blocks comprising information stored in the source database prior to the second point in time; and

mounting the second set of files on the second destination database server allowing the second destination database server to read from and write to the second set of files.

2. The method of claim 1 , wherein receiving information identifying a source database comprises receiving a selection of the source database from a list of potential source databases presented to a user.

3. The method of claim 1 , wherein receiving information identifying a destination database server comprises receiving a selection of the destination database server from a list of potential destination database servers presented to a user.

4. The method of claim 1 , wherein the receiving of selection of a point in time comprises:

presenting a geometric shape, wherein a position in the geometric shape corresponds to a time value;

receiving a selection of a position in the geometric shape; and

mapping the selection of the position in the geometric shape to the point in time selected.

5. The method of claim 4 , wherein the geometric shape is a line.

6. The method of claim 1 , wherein the receiving of selection of a point in time comprises:

presenting a geometric shape, wherein a position in the geometric shape corresponds to database operations in the source database;

receiving a selection of a position in the geometric shape;

mapping the selection of the position in the geometric shape to a database operation performed in the source database; and

determining the selected point in time based on a time of execution of the database operation.

7. The method of claim 6 , wherein the geometric shape is a line.

8. The method of claim 1 , wherein the second set of database blocks overlaps the first set of database blocks.

9. The method of claim 1 , further comprising:

receiving a request to write data to the first virtual database; and

identifying a database block associated with a file in the first set of files associated with the first virtual database;

responsive to the database block being also associated with the second set of files associated with the second virtual database, copying the database block; and

linking the copied database block with the file in the first set of files and writing the data to the copied database block.

10. The method of claim 1 , wherein first virtual database is created using a set of database parameters of the source database.

11. The method of claim 1 , further comprising:

presenting a set of database parameters to a user;

receiving modifications to one or more database parameters to obtain a modified set of database parameters; and

using the modified set of database parameters along with the modification for creating the first virtual database.

12. The method of claim 11 , further comprising:

storing the modified set of database parameters; and

using the modified set of parameters for creating the second virtual database.

13. The method of claim 1 , wherein the source database is a previously created virtual database.

14. The method of claim 1 , wherein the selection of the first point in time is associated with a policy comprising a schedule for obtaining point-in-time copies of the source database.

15. The method of claim 14 , wherein the predetermined policy specifies a schedule for purging a point-in-time copy after a retention period.

16. The method of claim 1 , further comprising:

receiving a file path associated with the first set of files created for the first virtual database such that the files are created at the file path.

17. The method of claim 1 , further comprising:

receiving a naming convention associated with the first set of files created for the first virtual database such that the files are named based on the naming convention.

18. The method of claim 1 , further comprising:

receiving a mapping of patterns associated with the file paths of the source database to the file paths of the first set of files created for the first virtual database; and

determining the file paths for the first set of files created for the first virtual database based on the mapping.

19. The method of claim 1 , further comprising:

sending program code to the production database system, wherein the program code is configured to send point-in-time copies of the source database.

20. The method of claim 1 , wherein the selection of source database is received responsive to:

receiving selection of a host server associated with the source database;

discovering databases installed on the host server; and

presenting the discovered databases to a user for selection of a database to be used as the source database.

21. The method of claim 1 , further comprising:

receiving information describing transaction logs from the source database wherein the transaction logs represent changes to the source database since a previous point-in-time copy was received.

22. The method of claim 21 , further comprising:

receiving information describing a policy specifying a schedule for purging the transaction logs after a retention period.

23. The method of claim 1 , further comprising:

receiving information describing transaction logs from the source database, wherein information describing transaction logs represents changes to the source database since a previous receipt of information describing transaction logs.

24. A method of creating a virtual database system, the method comprising:

receiving information identifying a source database for providing data for storage in a first virtual database and a second virtual database being created;

receiving information identifying a first destination database server for accessing the first virtual database being created; and

creating the first virtual database on a storage system storing a plurality of point-in-time copies of the source database, the point-in-time copies comprising database blocks such that at least some of the database blocks are associated with multiple point-in-time copies of the source database, the creating of the first virtual database comprising:

selecting a first point in time for association with the first virtual database being created;

creating a first set of files for the first virtual database, each file in the first set of files linked with a first set of database blocks comprising information stored in the source database prior to the first point in time; and

mounting the first set of files on the first destination database server allowing the first destination database server to read from and write to the first set of files;

receiving information identifying a second destination database server for accessing the second virtual database being created; and

creating the second virtual database on the storage system, the creating of the second virtual database comprising:

selecting a second point in time for association with the second virtual database being created;

creating a second set of files for the second virtual database, each file in the second set of files linked with a second set of database blocks comprising information stored in the source database prior to the second point in time; and

mounting the second set of files on the second destination database server allowing the second destination database server to read from and write to the second set of files.

25. The method of claim 24 , wherein the selected point in time corresponds to a latest point-in-time copy of the source database stored on the storage system.

26. The method of claim 24 , wherein the selected point in time is based on latest transaction logs obtained by the storage system from the source database, the latest transaction logs obtained subsequent to obtaining a latest point-in-time copy of the source database stored on the storage system.

27. A computer-implemented system for creating a virtual database, the system comprising:

a computer processor; and

a computer-readable storage medium storing computer program modules configured to execute on the computer processor, the computer program modules comprising:

a user interface manager configured to:

receive information identifying a source database for providing data for storage in a first virtual database and a second virtual database being created;

receive information identifying a first point in time, such that the source database comprises information stored prior to the first point in time;

receive information identifying a first destination database server for accessing the first virtual database being created;

receive information identifying a second point in time, such that the source database comprises information stored prior to the second point in time; and

receive information identifying a second destination database server for accessing the second virtual database being created;

a storage allocation manager module configured to:

store on a storage system, a plurality of point-in-time copies of the source database, the point-in-time copies comprising database blocks such that at least some of the database blocks are associated with multiple point-in-time copies of the source database;

a virtual database manager module configured to:

create the first virtual database on the storage system, the creating of the first virtual database comprising creating a first set of files for the first virtual database, each file in the first set of files linked with a first set of database blocks comprising information stored in the source database prior to the first point in time; and

create the second virtual database on the storage system, the creating of the second virtual database comprising creating a second set of files for the second virtual database, each file in the second set of files linked with a second set of database blocks comprising information stored in the source database prior to the second point in time; and

a file sharing manager module configured to:

mount the first set of files on the first destination database server allowing the first destination database server to read from and write to the first set of files; and

mount the second set of files on the second destination database server allowing the second destination database server to read from and write to the second set of files.

28. A computer program product having a non-transitory computer-readable storage medium storing computer-executable code for creating a virtual database, the code comprising:

a user interface manager configured to:

receive information identifying a source database for providing data for storage in a first virtual database and a second virtual database being created;

receive information identifying a first point in time, such that the source database comprises information stored prior to the first point in time;

receive information identifying a first destination database server for accessing the first virtual database being created;

receive information identifying a second point in time, such that the source database comprises information stored prior to the second point in time; and

receive information identifying a second destination database server for accessing the second virtual database being created;

a storage allocation manager module configured to:

store on a storage system, a plurality of point-in-time copies of the source database, the point-in-time copies comprising database blocks such that at least some of the database blocks are associated with multiple point-in-time copies of the source database;

a virtual database manager module configured to:

create the first virtual database on the storage system, the creating of the first virtual database comprising creating a first set of files for the first virtual database, each file in the first set of files linked with a first set of database blocks comprising information stored in the source database prior to the first point in time; and

create the second virtual database on the storage system, the creating of the second virtual database comprising creating a second set of files for the second virtual database, each file in the second set of files linked with a second set of database blocks comprising information stored in the source database prior to the second point in time; and

a file sharing manager module configured to:

mount the first set of files on the destination database server allowing the first destination database server to read from and write to the first set of files; and

mount the second set of files on the second destination database server allowing the second destination database server to read from and write to the second set of files.

29. The computer-implemented system of claim 27 , wherein the user interface manager is further configured to:

present a geometric shape, wherein a position in the geometric shape corresponds to a time value;

receive a selection of a position in the geometric shape; and

map the selection of the position in the geometric shape to a point in time selected.

30. The computer-implemented system of claim 27 , wherein the user interface manager is further configured to:

present a geometric shape, wherein a position in the geometric shape corresponds to database operations in the source database;

receive a selection of a position in the geometric shape;

map the selection of the position in the geometric shape to a database operation performed in the source database; and

determine a point in time based on a time of execution of the database operation.

31. The computer-implemented system of claim 27 , wherein the second set of database blocks overlaps the first set of database blocks.

32. The computer-implemented system of claim 27 , wherein the virtual database manager is further configured to:

receive a request to write data to the first virtual database; and

identify a database block associated with a file in the first set of files associated with the first virtual database;

responsive to the database block being also associated with the second set of files associated with the second virtual database, copy the database block; and

link the copied database block with the file in the first set of files and write the data to the copied database block.

33. The computer-implemented system of claim 27 , wherein the source database is a previously created virtual database.

34. The computer program product of claim 28 , wherein the user interface manager is further configured to:

present a geometric shape, wherein a position in the geometric shape corresponds to a time value;

receive a selection of a position in the geometric shape; and

map the selection of the position in the geometric shape to a point in time selected.

35. The computer program product of claim 28 , wherein the user interface manager is further configured to:

present a geometric shape, wherein a position in the geometric shape corresponds to database operations in the source database;

receive a selection of a position in the geometric shape;

map the selection of the position in the geometric shape to a database operation performed in the source database; and

determine a selected point in time based on a time of execution of the database operation.

36. The computer program product of claim 28 , wherein the second set of database blocks overlaps the first set of database blocks.

37. The computer program product of claim 28 , wherein the virtual database manager is further configured to:

receive a request to write data to the first virtual database; and

identify a database block associated with a file in the first set of files associated with the first virtual database;

responsive to the database block being also associated with the second set of files associated with the second virtual database, copy the database block; and

link the copied database block with the file in the first set of files and write the data to the copied database block.

38. The computer program product of claim 28 , wherein the source database is a previously created virtual database.

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: 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/0578 →
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 →
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 →
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 Feb 28, 2017
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 041398/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2012
From: YUEH, JEDIDIAH; LUIZ, XAVIER DAVID; WANG, YAN; SRIVASTAVA, ALOK
To: DELPHIX CORP.
Reel/Frame 027657/0726 →