IP Library Granted Patent US 10,762,042
Granted Patent B2
US 10,762,042 · App. 15/810,678 · Granted Sep 1, 2020

Virtual database system

Inventors: Charles Li Zha (Palo Alto, CA); Jedidiah Yueh (Menlo Park, CA)
Assignee: Delphix Corp.
G06F16/128G06F16/256G06F16/951G06F2201/84
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,762,042
App. No.
15/810,678
Granted
Sep 1, 2020
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 (57)

1. A method for creating virtual databases comprising database blocks, wherein each database block includes metadata associated with the database block, the method comprising:

receiving, from a database system, a first data stream comprising a first plurality of database blocks corresponding to a database at a first point in time, wherein each database block of the first data stream includes metadata associated with the database block;

storing on a storage system, the first plurality of database blocks received as part of the first data stream;

creating a first virtual database corresponding to the database at the first point in time, the first virtual database comprising the first plurality of database blocks stored in the storage system;

receiving, from the database system, a second data stream comprising a second plurality of database blocks corresponding to the database at a second point in time that is after the first point in time, wherein each database block of the second data stream includes metadata associated with the database block;

in response to determining that a database block of the second plurality of database blocks has not been updated since the first point in time, not storing the database block in the storage system;

storing a remaining portion of the second plurality of database blocks received as part of the second data stream;

creating a second virtual database corresponding to the database at the second point in time, the second virtual database comprising the remaining portion of the second plurality of database blocks and at least one database block of the first plurality of database blocks;

providing access to the virtual database from a server allowing the server to read from and write to the database blocks of the virtual database.

2. The method of claim 1 , further comprising receiving a plurality of transaction logs corresponding to changes to database blocks of the first plurality of database blocks on the database system between the first point in time and the second point in time.

3. The method of claim 2 , further comprising:

receiving a request for creation of a third virtual database corresponding to a third point in time between the first and second points in time;

identifying a portion of the plurality of transaction logs corresponding to a time period between the first point in time and the third point in time; and

updating one or more stored database blocks of the first plurality of database blocks using the portion of the plurality of transaction logs.

4. The method of claim 3 , wherein updating the one or more stored database blocks comprises:

generating a copy of a stored database block of the one or more stored database blocks; and

applying at least one transaction log of the portion of the plurality of transaction logs to the copy of the stored database block.

5. The method of claim 1 , wherein each of the first and second plurality of database blocks comprises corresponding metadata, the metadata corresponding to a database block comprising information indicating a time at which the database block was last updated.

6. The method of claim 1 , further comprising, responsive to determining that a database block of the second plurality of database blocks is one of a temporary database block or an empty database block, not storing the database block in the storage system.

7. The method of claim 1 , further comprising, transforming, by the storage system, data of a received database block of the first or second data streams to a format distinct from a format of the received database block and storing the transformed data instead of the received block.

8. The method of claim 7 , wherein transforming the data of the received database block comprises compressing and encrypting the data of the received database block.

9. The method of claim 1 , wherein providing read and write access to the first virtual database and the second virtual database comprises:

providing access to the first virtual database from a first database server allowing the first database server to read from and write to the database blocks of the first virtual database; and

providing access to the second virtual database from a second database server allowing the second database server to read from and write to the database blocks of the second virtual database.

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

receiving, from a database system, a first data stream comprising a first plurality of database blocks corresponding to a database at a first point in time, wherein each database block of the first data stream includes metadata associated with the database block;

storing on a storage system, the first plurality of database blocks received as part of the first data stream;

creating a first virtual database corresponding to the database at the first point in time, the first virtual database comprising the first plurality of database blocks stored in the storage system;

receiving, from the database system, a second data stream comprising a second plurality of database blocks corresponding to the database at a second point in time that is after the first point in time, wherein each database block of the second data stream includes metadata associated with the database block;

in response to determining that a database block of the second plurality of database blocks has not been updated since the first point in time, not storing the database block in the storage system;

storing a remaining portion of the second plurality of database blocks received as part of the second data stream;

creating a second virtual database corresponding to the database at the second point in time, the second virtual database comprising the remaining portion of the second plurality of database blocks and at least one database block of the first plurality of database blocks;

providing access to the virtual database from a server allowing the server to read from and write to the database blocks of the virtual database.

11. The non-transitory computer-readable storage medium of claim 10 , further comprising instructions for receiving a plurality of transaction logs corresponding to changes to database blocks of the first plurality of database blocks on the database system between the first point in time and the second point in time.

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

receiving a request for creation of a third virtual database corresponding to a third point in time between the first and second points in time;

identifying a portion of the plurality of transaction logs corresponding to a time period between the first point in time and the third point in time; and

updating one or more stored database blocks of the first plurality of database blocks using the portion of the plurality of transaction logs.

13. The non-transitory computer-readable storage medium of claim 12 , wherein updating the one or more stored database blocks comprises:

generating a copy of a stored database block of the one or more stored database blocks; and

applying at least one transaction log of the portion of the plurality of transaction logs to the copy of the stored database block.

14. The non-transitory computer-readable storage medium of claim 10 , wherein each of the first and second plurality of database blocks comprises corresponding metadata, the metadata corresponding to a database block comprising information indicating a time at which the database block was last updated.

15. The non-transitory computer-readable storage medium of claim 10 , further comprising instructions for, responsive to determining that a database block of the second plurality of database blocks is one of a temporary database block or an empty database block, not storing the database block in the storage system.

16. The non-transitory computer-readable storage medium of claim 10 , further comprising instructions for, transforming, by the storage system, data of a received database block of the first or second data streams to a format distinct from a format of the received database block and storing the transformed data instead of the received block.

17. The non-transitory computer-readable storage medium of claim 16 , wherein transforming the data of the received database block comprises compressing and encrypting the data of the received database block.

18. The non-transitory computer-readable storage medium of claim 10 , wherein providing read and write access to the first virtual database and the second virtual database comprises:

providing access to the first virtual database from a first database server allowing the first database server to read from and write to the database blocks of the first virtual database; and

providing access to the second virtual database from a second database server allowing the second database server to read from and write to the database blocks of the second virtual database.

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

generating, at a database system, a first data stream comprising a first plurality of database blocks corresponding to a database at a first point in time, wherein each database block of the second data stream includes metadata associated with the database block;

transmitting the first data stream from the database system to a storage system, wherein the storage system creates a first virtual database corresponding to the database at the first point in time, the first virtual database comprising the first plurality of database blocks stored in the storage system;

generating, at the database system, a second data stream comprising a second plurality of database blocks corresponding to the database at a second point in time that is after the first point in time, wherein each database block of the second data stream includes metadata associated with the database block;

in response to determining that a database block of the second plurality of database blocks has not been updated since the first point in time, removing the database block from the second data stream;

transmitting the second data stream having a remaining portion of the second plurality of database blocks to the storage system, wherein the storage system creates a second virtual database corresponding to the database at the second point in time, the second virtual database comprising the remaining portion of the second plurality of database blocks and at least one database block of the first plurality of database blocks and provides access to the virtual database from a server allowing the server to read from and write to the database blocks of the virtual database.

20. The method of claim 19 , further comprising transmitting to the storage system a plurality of transaction logs corresponding to changes to database blocks of the first plurality of database blocks on the database system between the first point in time and the second point in time.

21. The method of claim 19 , wherein each of the first and second plurality of database blocks comprises corresponding metadata, the metadata corresponding to a database block comprising information indicating a time at which the database block was last updated.

22. The method of claim 19 , further comprising, responsive to determining that a database block of the second plurality of database blocks is one of a temporary database block or an empty database block, removing the database block from the second data stream.

Assignments (13)
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 →
RELEASE OF SECURITY INTEREST Recorded Apr 7, 2026
From: CORTLAND CAPITAL MARKET SERVICES, AS COLLATERAL AGENT
To: ROGUE WAVE SOFTWARE, INC.; AKANA, INC.; GLIFFY, INC.; DELPHIX CORP.
Reel/Frame 075365/0519 →
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/0429 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2020
From: ZHA, CHARLES LI; YUEH, JEDIDIAH
To: DELPHIX CORP.
Reel/Frame 051533/0615 →
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 →
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 →
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 →