IP Library Granted Patent US 10,372,607
Granted Patent B2
US 10,372,607 · App. 14/938,879 · Granted Aug 6, 2019

Systems and methods for improving the efficiency of point-in-time representations of databases

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,372,607
App. No.
14/938,879
Granted
Aug 6, 2019
Kind
B2
Abstract

The disclosed computer-implemented method for improving the efficiency of point-in-time representations of databases may include (1) identifying a database that includes (A) one or more utilized storage locations that store substantive data and (B) one or more empty storage locations that are not currently storing any substantive data, (2) creating a point-in-time representation of the database by (A) identifying the empty storage locations and (B) flagging the empty storage locations in connection with the point-in-time representation of the database, (3) detecting a request to write certain substantive data to at least one of the empty storage locations, and then in response to detecting the request, (4) satisfying the request while refraining from performing a copy-on-write operation on the empty storage location due at least in part to the empty storage location not currently storing any substantive data. Various other methods, systems, and computer-readable media are also disclosed.

Claims (78)

1. A computer-implemented method for improving the efficiency of point-in-time representations of databases, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a database that references:

one or more utilized storage locations that store substantive data;

one or more allocated unutilized storage locations that are currently storing non-substantive data comprising one or more characters that do not represent a portion of a file;

creating a point-in-time representation of the database such that the database and the point-in-time representation of the database both reference the substantive data stored in the utilized storage locations but the point-in-time representation does not reference the allocated unutilized storage locations, wherein creating the point-in-time representative of the database comprises:

identifying the allocated unutilized storage locations that are currently storing the non-substantive data by querying a database management application for metadata that identifies the allocated unutilized storage locations;

flagging the allocated unutilized storage locations in connection with the point-in-time representation of the database;

detecting a request to write certain substantive data to at least one of the allocated unutilized storage locations flagged in connection with the point-in-time representation of the database;

in response to detecting the request, satisfying the request while refraining from performing a copy-on-write operation on the at least one of the allocated unutilized storage locations due at least in part to the at least one of the allocated unutilized storage locations currently storing the non-substantive data;

detecting another request to write at least some substantive data to at least one of the utilized storage locations referenced by the point-in-time representation;

in response to detecting the another request, performing a copy-on-write operation on the at least one of the utilized storage locations due at least in part to the at least one of the utilized storage locations storing substantive data.

2. The method of claim 1 , wherein the point-in-time representation of the database comprises at least one of:

a snapshot of the database;

a storage checkpoint of the database.

3. The method of claim 2 , wherein at least one of:

flagging the allocated unutilized storage locations comprises ensuring that the allocated unutilized storage locations are not shared by the database and the snapshot;

flagging the allocated unutilized storage locations comprises ensuring that the allocated unutilized storage locations are not shared by the database and the storage checkpoint.

4. The method of claim 1 , wherein creating the point-in-time representation of the database comprises:

building a collection of references to the utilized storage locations;

excluding, from the collection, any references to the allocated unutilized storage locations.

5. The method of claim 1 , wherein the point-in-time representation references the utilized storage locations;

further comprising:

detecting another request to write at least some substantive data to at least one of the utilized storage locations referenced by the point-in-time representation;

performing a copy-on-write operation on the at least one of the utilized storage locations due at least in part to the at least one of the utilized storage locations storing substantive data.

6. The method of claim 1 , further comprising:

creating metadata that identifies the allocated unutilized storage locations by offset and offset length;

maintaining the metadata in connection with the database to facilitate identifying the allocated unutilized storage locations that are not currently storing any substantive data within the database.

7. The method of claim 6 , wherein maintaining the metadata comprises storing the metadata in the point-in-time representation of the database.

8. The method of claim 6 , further comprising:

loading at least a portion of the substantive data included in the database into a cache;

loading at least a portion of the metadata into the cache.

9. The method of claim 6 , further comprising performing a restore operation that restores at least a portion of the substantive data to the database by reading the metadata.

10. The method of claim 1 , wherein the characters of the non-substantive data comprise a null.

11. A system for improving the efficiency of point-in-time representations of databases, the system comprising:

an identification module, stored in memory, that identifies a database that references:

one or more utilized storage locations that store substantive data;

one or more allocated unutilized storage locations that are currently storing non-substantive data comprising one or more characters that do not represent a portion of a file;

a query module, stored in memory, that queries a database management application for metadata that identifies the allocated unutilized storage locations;

a creation module, stored in memory, that creates a point-in-time representation of the database such that the database and the point-in-time representation of the database both reference the substantive data stored in the utilized storage locations but the point-in-time representation does not reference the allocated unutilized storage locations, wherein creating the point-in-time representative of the database comprises:

identifying, based at least in part on the metadata, the allocated unutilized storage locations that are currently storing the non-substantive data;

flagging the allocated unutilized storage locations in connection with the point-in-time representation of the database;

a detection module, stored in memory, that detects a request to write certain substantive data to at least one of the allocated unutilized storage locations flagged in connection with the point-in-time representation of the database;

an Input/Output module, stored in memory, that satisfies the request while refraining from performing a copy-on-write operation on the at least one of the allocated unutilized storage locations due at least in part to the at least one of the allocated unutilized storage locations currently storing the non-substantive data;

wherein the detection module further detects another request to write at least some substantive data to at least one of the utilized storage locations referenced by the point-in-time representation;

wherein the Input/Output module further performs a copy-on-write operation on the at least one of the utilized storage locations due at least in part to the at least one of the utilized storage locations storing substantive data;

at least one physical processor that executes the identification module, the query module, the creation module, the detection module, and the Input/Output module.

12. The system of claim 11 , wherein the point-in-time representation of the database comprises at least one of:

a snapshot of the database;

a storage checkpoint of the database.

13. The system of claim 12 , wherein the creation module at least one of:

flags the allocated unutilized storage locations to ensure that the allocated unutilized storage locations are not shared by the database and the snapshot;

flags the allocated unutilized storage locations comprises to ensure that the allocated unutilized storage locations are not shared by the database and the storage checkpoint.

14. The system of claim 11 , wherein the creation module creates the point-in-time representation of the database by:

building a collection of references to the utilized storage locations;

excluding, from the collection, any references to the allocated unutilized storage locations.

15. The system of claim 11 , wherein:

the point-in-time representation references the utilized storage locations;

the detection module detects another request to write at least some substantive data to at least one of the utilized storage locations referenced by the point-in-time representation;

the Input/Output module performs a copy-on-write operation on the at least one of the utilized storage locations due at least in part to the at least one of the utilized storage locations storing substantive data.

16. The system of claim 11 , wherein:

the creation module creates metadata that identifies the allocated unutilized storage locations by offset and offset length;

the Input/Output module maintains the metadata in connection with the database to facilitate identifying the allocated unutilized storage locations that are not currently storing any substantive data within the database.

17. The system of claim 16 , wherein the Input/Output module maintains the metadata by storing the metadata in the point-in-time representation of the database.

18. The system of claim 16 , wherein the Input/Output module:

loads at least a portion of the substantive data included in the database into a cache;

loads at least a portion of the metadata into the cache.

19. The system of claim 11 , wherein the characters of the non-substantive data comprise a null.

20. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify a database that references:

one or more utilized storage locations that store substantive data;

one or more allocated unutilized storage locations that are currently storing non-substantive data comprising one or more characters that do not represent a portion of a file;

create a point-in-time representation of the database such that the database and the point-in-time representation of the database both reference the substantive data stored in the utilized storage locations but the point-in-time representation does not reference the allocated unutilized storage locations, wherein creating the point-in-time representative of the database comprises:

identifying the allocated unutilized storage locations that are currently storing the non-substantive data by querying a database management application for metadata that identifies the allocated unutilized storage locations;

flagging the allocated unutilized storage locations in connection with the point-in-time representation of the database;

detect a request to write certain substantive data to at least one of the allocated unutilized storage locations flagged in connection with the point-in-time representation of the database;

satisfy the request while refraining from performing a copy-on-write operation on the at least one of the allocated unutilized storage locations due at least in part to the at least one of the allocated unutilized storage locations currently storing the non-substantive data;

detect another request to write at least some substantive data to at least one of the utilized storage locations referenced by the point-in-time representation;

perform, in response to detecting the another request, a copy-on-write operation on the at least one of the utilized storage locations due at least in part to the at least one of the utilized storage locations storing substantive data.

Assignments (16)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: VIJAYVARGIYA, SHIRISH; JAIN, SANJAY
To: SYMANTEC CORPORATION
Reel/Frame 037019/0619 →