IP Library › Granted Patent US 12,164,394
Granted Patent B2
US 12,164,394 · App. 18/073,805 · Granted Dec 10, 2024

Database reversion with backup data structures

Inventors: Varun Joshi Kishanlal Joshi (Bellevue, WA); Anil Kumar Ruia (Sammamish, WA); Yogesh Bansal (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/1471G06F11/1469G06F11/181G06F2201/80
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 12,164,394
App. No.
18/073,805
Granted
Dec 10, 2024
Kind
B2
Abstract

A system for database reversion is described. The system comprises: a database engine configured to host an active database; a log engine configured to generate transaction logs for transactions affecting the active database; a backup engine configured to create a backup data structure to allow for database reversion; and a memory buffer separate from the active database. A page in the active database has an associated page timestamp indicating a most recent update of the page in the active database. The database engine is configured to flush an updated copy of a page in the memory buffer to the active database. The backup engine is configured to, prior to the flush, store an image of the page in the active database to the backup data structure when the page in the active database is older than the time value related to the creation time of the backup data structure.

Claims (69)

1. A system for database reversion, the system comprising:

a database engine configured to host an active database and a passive database and to replicate the active database to the passive database, wherein the active database comprises a plurality of pages, wherein a page in the active database has an associated page timestamp indicating a most recent update of the page in the active database;

a log engine configured to generate transaction logs for transactions affecting the active database;

a backup engine configured to create a backup data structure to allow for database reversion for the active database, the backup data structure being separate from the active database and the passive database and having a time value related to a creation time of the backup data structure; and

a memory buffer separate from the active database;

wherein the database engine is configured to:

copy the page in the active database to the memory buffer,

update the copy of the page in the memory buffer, and

flush the updated copy of the page in the memory buffer to the active database, wherein the flush causes the updated copy of the page in the memory buffer to replace the page in the active database;

wherein the backup engine is configured to, prior to the flush of the updated copy of the page in the memory buffer to the active database, store an image of the page in the active database to the backup data structure when the page in the active database, prior to the flush, is older than the time value related to the creation time of the backup data structure; and

wherein the backup engine is further configured to receive a request to revert the passive database to a requested time, identify the backup data structure based on the requested time and the time value related to the creation time of the backup data structure, and revert the passive database to the requested time using the identified backup data structure to copy the image of the page to the passive database.

2. The system of claim 1 , wherein the backup engine is configured to identify log identifiers for a required range of logs that bring the active database to a consistent state as of the time value related to the creation time of the backup data structure, and store the identified log identifiers in the backup data structure.

3. The system of claim 2 , wherein the database engine is configured to replay the required range of logs according to the identified log identifiers onto the passive database after copying the image of the page to the passive database to revert the passive database to the requested time.

4. The system of claim 3 , wherein the database engine is configured to replay at least some of the transaction logs onto the passive database after replaying the required range of logs according to the identified log identifiers, wherein the at least some of the transaction logs correspond to transactions between the time value related to the creation time of the backup data structure and the requested time.

5. The system of claim 3 , wherein:

the backup data structure is a first backup data structure;

the database engine is configured to sequentially apply a plurality of backup data structures using most recent backup data structures of the plurality of backup data structures first;

wherein the plurality of backup data structures comprises the first backup data structure as an oldest backup data structure and one or more remaining backup data structures; and

wherein the backup engine is configured to use the one or more remaining backup data structures to copy images of pages from the one or more remaining backup data structures to the passive database without replaying required ranges of logs according to remaining log identifiers of the one or more remaining backup data structures.

6. The system of claim 1 , wherein the backup data structure comprises images of a subset of the plurality of pages of the active database.

7. The system of claim 1 , wherein the database engine is distributed across multiple computing devices and configured for bi-directional replication between the active database and the passive database.

8. The system of claim 7 , wherein the backup engine is configured to transfer the backup data structure from a first computing device that hosts the active database to a second computing device that hosts the passive database.

9. The system of claim 1 , wherein the system further comprising a backup buffer, wherein the backup engine is configured to maintain the backup data structure in the backup buffer, and to flush the backup buffer when a buffered page of the database engine corresponding to a buffered image in the backup buffer is flushed.

10. The system of claim 1 , wherein the backup engine is configured to determine whether a table within the active database has been deleted for the backup data structure, and when the table has been deleted,

omit storing images for data within the table in the backup data structure,

store images of a table root page and space tree pages of the table in the backup data structure, and

append a table delete record to the backup data structure to cause an update to the space tree pages and the table root page when reverting the passive database.

11. A method for database reversion, wherein the method comprising:

hosting an active database and a passive database, wherein the active database comprises a plurality of pages, wherein a page in the active database has an associated page timestamp indicating a most recent update of the page in the active database;

replicating the active database to the passive database;

creating a backup data structure to allow for database reversion for the active database, the backup data structure being separate from the active database and the passive database and having a time value related to a creation time of the backup data structure;

copying the page in the active database to a memory buffer separate from the active database;

updating the copy of the page in the memory buffer;

flushing the updated copy of the page in the memory buffer to the active database, wherein the flushing causes the updated copy of the page in the memory buffer to replace the page in the active database;

prior to the flushing of the updated copy of the page in the memory buffer to the active database, storing an image of the page in the active database to the backup data structure when the page in the active database, prior to the flush, is older than the time value related to the creation time of the backup data structure;

receiving a request to revert the passive database to a requested time;

identifying the backup data structure based on the requested time and the time value related to the creation time of the backup data structure; and

reverting the passive database to the requested time using the identified backup data structure to copy the image of the page to the passive database.

12. The method of claim 11 , wherein the method further comprising:

generating transaction logs for transactions affecting the active database;

identifying log identifiers for a required range of logs that bring the active database to a consistent state as of the time value related to the creation time of the backup data structure; and

storing the identified log identifiers in the backup data structure.

13. The method of claim 12 , wherein the method further comprising:

replaying the required range of logs according to the identified log identifiers onto the passive database after copying the image of the page to the passive database to revert the passive database to the requested time.

14. The method of claim 13 , further comprising replaying at least some of the transaction logs onto the passive database after replaying the required range of logs, wherein the at least some of the transaction logs correspond to transactions between the time value related to the creation time of the backup data structure and the requested time.

15. The method of claim 13 , wherein the backup data structure is a first backup data structure, the method further comprising sequentially applying a plurality of backup data structures using most recent backup data structures of the plurality of backup data structures first, the plurality of backup data structures comprising the first backup data structure as an oldest backup data structure and one or more remaining backup data structures, including:

using the one or more remaining backup data structures to copy images of pages to the passive database without replaying required ranges of logs according to remaining log identifiers of the one or more remaining backup data structures.

16. A computer storage medium comprising instructions being executable by one or more processors to cause the one or more processors to:

host an active database and a passive database, wherein the active database comprises a plurality of pages, wherein a page in the active database has an associated page timestamp indicating a most recent update of the page in the active database;

replicate the active database to the passive database;

create a backup data structure to allow for database reversion for the active database, the backup data structure being separate from the active database and the passive database and having a time value related to a creation time of the backup data structure;

copy the page in the active database to a memory buffer separate from the active database;

update the copy of the page in the memory buffer;

flush the updated copy of the page in the memory buffer to the active database,

wherein the flushing causes the updated copy of the page in the memory buffer to replace the page in the active database;

prior to the flushing of the updated copy of the page in the memory buffer to the active database, store an image of the page in the active database to the backup data structure when the page in the active database, prior to the flush, is older than the time value related to the creation time of the backup data structure,

receive a request to revert the passive database to a requested time;

identify the backup data structure based on the requested time and the time value related to the creation time of the backup data structure; and

revert the passive database to the requested time using the identified backup data structure to copy the image of the page to the passive database.

17. The computer storage medium of claim 16 , wherein the page is a first page and the active database comprises a second page, wherein the instructions further cause the one or more processors to:

generate transaction logs for transactions affecting the active database;

identify log identifiers for a required range of logs that bring the active database to a consistent state as of the time value related to the creation time of the backup data structure; and

store the identified log identifiers in the backup data structure.

18. The non-transient computer-readable storage medium of claim 17 , wherein the instructions further cause the one or more processors to:

replay the required range of logs according to the identified log identifiers onto the passive database after copying the image of the first page to the passive database to revert the passive database to the requested time.

19. The computer storage medium of claim 18 , wherein the instructions further cause the one or more processors to:

replay at least some of the transaction logs onto the passive database after replaying the required range of logs according to the identified log identifiers, wherein the at least some of the transaction logs correspond to transactions between the time value related to the creation time of the backup data structure and the requested time.

20. The computer storage medium of claim 18 , wherein the backup data structure is a first backup data structure, wherein the instructions further cause the one or more processors to:

sequentially apply a plurality of backup data structures using most recent backup data structures of the plurality of backup data structures first, the plurality of backup data structures comprising the first backup data structure as an oldest backup data structure and one or more remaining backup data structures, including using the one or more remaining backup data structures to copy images of pages to the passive database without replaying required ranges of logs according to remaining log identifiers of the one or more remaining backup data structures.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2022
From: KISHANLAL JOSHI, VARUN JOSHI; RUIA, ANIL KUMAR; BANSAL, YOGESH
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 061954/0782 →
Continuity (1)
Related Publication 20240184674A1 · Jun 6, 2024