IP Library Granted Patent US 8,150,808
Granted Patent B2
US 8,150,808 · App. 12/603,541 · Granted Apr 3, 2012

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,150,808
App. No.
12/603,541
Granted
Apr 3, 2012
Kind
B2
Abstract

Information from multiple databases is retrieved and stored on a database storage system. Multiple point-in-time copies are obtained for each database. A point-in-time copy retrieves data changed in the 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. Each file in the set of files created for a VDB is linked to the database blocks on the database storage system associated with a point-in-time copy of the source database. The set of files associated with the VDB are mounted on a database server allowing the database server to read from and write to the set of files. Workflows based on VDBs allow various usage scenarios based on databases to be implemented efficiently, for example, testing and development, backup and recovery, and data warehouse building.

Claims (123)

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

receiving different point-in-time copies of a source database, the source database comprising a plurality of database blocks;

storing on a storage system, database blocks for a plurality of different point-in-time copies of the source database, wherein at least some of the stored database blocks are associated with multiple point-in-time copies of the source database;

creating a set of files for a virtual database, each file in the set of files is linked to the database blocks on the storage system associated with a point-in-time copy of the source database; and

mounting the set of files associated with the virtual database on a database server allowing the database server to read from and write to the set of files.

2. The method of claim 1 , further comprising:

receiving a read request for data in the set of files associated with the virtual database from the database server;

accessing data in at least one database block associated with a file in the set of files; and

sending the data in response to the read request.

3. The method of claim 1 , further comprising:

sending a request to receive a point-in-time copy of a source database.

4. The method of claim 1 , wherein the source database is a storage level snapshot of a production database.

5. The method of claim 1 , wherein the source database is a standby database that replicates a production database.

6. The method of claim 1 , wherein the virtual database is a first virtual database and the source database is a second virtual database.

7. The method of claim 1 , further comprising:

associating the source database with a predetermined policy for managing point-in-time copies of the source database.

8. The method of claim 7 , wherein the predetermined policy specifies a schedule for receiving point-in-time copies of the source database.

9. The method of claim 8 , wherein the schedule specifies calendar days for receiving point-in-time copies of the source database.

10. The method of claim 8 , wherein the schedule specifies calendar days for receiving transaction logs of the source database.

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

12. The method of claim 7 , wherein the predetermined policy specifies purging the point-in-time copy based on availability of space on the storage system.

13. The method of claim 7 , wherein the predetermined policy specifies a schedule for purging the transaction logs after a retention period.

14. The method of claim 7 , wherein the predetermined policy specifies purging the transaction logs based on availability of space on the storage system.

15. The method of claim 1 , wherein the storage system is running on a virtual machine.

16. The method of claim 1 , further comprising:

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

17. 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.

18. 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.

19. The method of claim 18 , further comprising:

managing transaction logs associated with the source database based on a predetermined policy.

20. The method of claim 18 , wherein the predetermined policy specifies a schedule for receiving transaction logs of the source database.

21. The method of claim 18 , further comprising:

storing the information describing the transaction logs in hierarchical memory storage devices.

22. The method of claim 1 , wherein the database server is a first database server and the source database is for a second database server and the version of the first database server is different from the version of the second database server.

23. The method of claim 1 , wherein the database server is a first database server and the source database is for a second database server and the first database server is running on an operating system that is different from operating system on which the second database server is running.

24. The method of claim 1 , wherein the set of files is a first set of files, the virtual database is a first virtual database, and the database server is a first database server, the method further comprising:

creating a second set of files for a second virtual database, each file in the second set of files linked to the database blocks on the storage system associated with the point-in-time copy of the source database; and

mounting the second set of files associated with the second virtual database on a second database server allowing the second database server to read from and write to the second set of files.

25. The method of claim 24 , wherein at least some of the stored database blocks associated with the first set of files are also associated with the second set of files.

26. The method of claim 24 , further comprising:

receiving a request to write data to the first virtual database from the database server;

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

27. The method of claim 26 , wherein at least some of the stored database blocks associated with the first set of files are also associated with the second set of files;

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 and writing the data to the copied database block.

28. The method of claim 1 , wherein the set of files is a first set of files, the virtual database is a first virtual database, the database server is a first database server, and the point-in-time copy is the first point-in-time copy, the method further comprising:

creating a second set of files for a second virtual database, each file in the second set of files linked to the database blocks on the storage system associated with a second point-in-time copy of the source database; and

mounting the second set of files associated with the second virtual database on a second database server allowing the second database server to read from and write to the second set of files.

29. The method of claim 1 , wherein receiving point-in-time copies comprises receiving data streams corresponding to the point-in-time copies, wherein each data stream comprises data from database blocks associated with the source database.

30. The method of claim 29 , further comprising:

analyzing the data streams received to identify database blocks; and

storing the identified database blocks.

31. The method of claim 29 , wherein a data stream corresponding to a first point-in-time copy includes database blocks changed in the source database since a previous point-in-time copy was received.

32. The method of claim 29 , further comprising:

analyzing the data streams received to identify database blocks and analyzing the metadata of database blocks to determine the length of the database blocks for processing the data stream.

33. The method of claim 29 , further comprising:

analyzing the data streams received to identify database blocks and analyzing the metadata of database blocks to determine whether the database block needs to be stored.

34. The method of claim 29 , further comprising:

analyzing the data streams received to identify database blocks and determining not to store the database blocks that are one of temporary database blocks, empty database blocks, or database blocks that did not change since a previous retrieval of point-in-time copy of the source database.

35. The method of claim 1 , wherein mounting the set of files is storage protocol independent.

36. The method of claim 1 , further comprising:

compressing the database blocks prior to storing on the storage system.

37. The method of claim 1 , wherein the source database is a portion of a production database.

38. The method of claim 37 , wherein the portion of the production database comprises a table space.

39. The method of claim 37 , wherein the portion of the production database comprises at least a database table.

40. The method of claim 1 , wherein the database blocks linked with the set of files comprise a portion of the source database.

41. The method of claim 1 , wherein the database blocks linked with the set of files comprise at least a database table associated with the source database.

42. The method of claim 1 , wherein the virtual database is a privileged virtual database that allows access to all information.

43. The method of claim 1 , wherein the virtual database is a non-privileged virtual database that allows access to a subset of information considered non-sensitive information.

44. The method of claim 43 , wherein the virtual database is a non-privileged virtual database that masks sensitive information.

45. The method of claim 44 , further comprising:

storing the bookmark token.

46. The method of claim 1 , further comprising:

associating a point-in-time copy with a bookmark token; and

specifying the bookmark token to specify the point-in-time copy of the source database for use in creating a virtual database.

47. The method of claim 1 , further comprising:

associating the virtual database with one or more privileges specifying accessibility of information to a user with a given privilege.

48. The method of claim 1 , wherein a privilege is one of:

administrator privilege allowing policy management;

owner privilege allowing provisioning of VDBs; and

auditor privilege allowing viewing of information associated with VDBs.

49. The method of claim 1 , wherein the source database is a first source database, the plurality of database blocks is a first plurality of database blocks, the set of files is a first set of files, the virtual database is a first virtual database, and the database server is a second database server, the method comprising:

receiving point-in-time copies of a second source, the second source database comprising a second plurality of database blocks;

storing on the storage system, database blocks for the point-in-time copies of the second source database, wherein at least some of the stored database blocks are associated with multiple point-in-time copies of the second source database;

creating a second set of files for a second virtual database, the second set of files linked to the database blocks on the storage system associated with point-in-time copies of the second source database; and

mounting the second set of files associated with the second virtual database on a second database server allowing the second database server to read from and write to the second set of files.

50. 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 point-in-time copy manager module configured to:

receive different point-in-time copies of a source database, the source database comprising a plurality of database blocks;

a storage allocation manager module configured to:

store on a storage system, database blocks for a plurality of different point-in-time copies of the source database, wherein at least some of the stored database blocks are associated with multiple point-in-time copies of the source database;

a virtual database manager module configured to:

create a set of files for a virtual database, each file in the set of files linked to the database blocks on the storage system associated with a point-in-time copy of the source database; and

a file sharing manager module configured to:

mount the set of files associated with the virtual database on a database server allowing the database server to read from and write to the set of files.

51. The system of claim 50 , wherein the virtual database manager module is further configured to:

receive a read request for data in the set of files associated with the virtual database from the database server;

access data in at least one database block associated with a file in the set of files; and

send the data in response to the read request.

52. The system of claim 50 , wherein the virtual database manager module is further configured to:

receive a request to write data to the first virtual database from the database server;

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 and write the data to the copied database block.

53. The system of claim 50 , wherein the point-in-time copy manager module is further configured to:

send a request to receive a point-in-time copy of a source database.

54. The system of claim 50 , wherein the point-in-time copy manager module receives point-in-time copies comprising data streams, wherein a data stream comprises data from database blocks of the source database.

55. The system of claim 50 , wherein the point-in-time copy manager module is further configured to:

analyze the data streams received to identify database blocks to be stored.

56. The system of claim 50 , wherein the data stream comprises database blocks changed in the source database since a previous point-in-time copy was received.

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

a point-in-time copy manager module configured to:

receive different point-in-time copies of a source database, the source database comprising a plurality of database blocks;

a storage allocation manager module configured to:

store on a storage system, database blocks for a plurality of different point-in-time copies of the source database, wherein at least some of the stored database blocks are associated with multiple point-in-time copies of the source database;

a virtual database manager module configured to:

create a set of files for a virtual database, each file in the set of files linked to the database blocks on the storage system associated with a point-in-time copy of the source database; and

a file sharing manager module configured to:

mount the set of files associated with the virtual database on a database server allowing the database server to read from and write to the set of files.

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 Oct 22, 2009
From: ZHA, CHARLES LI; YUEH, JEDIDAH
To: DELPHIX CORP.
Reel/Frame 023410/0872 →