IP Library Granted Patent US 12,399,783
Granted Patent B2
US 12,399,783 · App. 17/849,939 · Granted Aug 26, 2025

Partial database restoration

Inventors: Pin Zhou (San Jose, CA); Prasenjit Sarkar (Los Gatos, CA)
Assignee: Rubrik, Inc.
G06F11/1451G06F11/1461G06F11/1469G06F16/219G06F2201/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,399,783
App. No.
17/849,939
Granted
Aug 26, 2025
Kind
B2
Abstract

Described herein is a system that restores a database by processing a portion of the database. The system restores the database to a previous state at a particular time by reverting data entries that have changed since the time to their initial values before the change. Data entries that have changed after the restore time are identified. For the data entries that have changed after the restore time, their initial values before the change are determined from various sources. The system determines a database version that is created most recently before the restore time. The system additionally identifies changes to the database between the restore time and when the database version is created. The initial values can be determined from either the database version or the changes made to the database between the restore time and when the database version is created.

Claims (53)

1. A method, comprising:

detecting an error in a database supported by a database restore system;

determining a restore time for the database based at least in part on detecting the error, the restore time occurring prior to the error;

querying a change log stored at the database restore system to identify one or more data entries in the database that were modified after the restore time, the change log comprising one or more change records corresponding to the one or more data entries, the one or more data entries comprising a subset of total data entries in the database;

determining that a data entry associated with a data entry identifier was added to the database after the restore time based at least in part on the one or more change records not comprising the data entry identifier;

determining respective previous values of the one or more data entries from a previous copy of the database stored at the database restore system, the previous copy being based at least in part on a full backup copy of the database and corresponding to a time period prior to the restore time; and

performing a partial restoration of the database by reverting the one or more data entries to the respective previous values of the one or more data entries, wherein performing the partial restoration of the database comprises removing the data entry from the database.

2. The method of claim 1 , further comprising:

identifying one or more partial changes made to the database after the restore time, wherein determining the respective previous values of the one or more data entries is based at least in part on identifying the one or more partial changes.

3. The method of claim 1 , further comprising:

receiving, via a user interface, a user input that indicates a time at which the error occurred within the database, wherein detecting the error is based at least in part on the user input.

4. The method of claim 1 , further comprising:

receiving, via a user interface, a user input that indicates a second data entry affected by the error, wherein determining the respective previous values of the one or more data entries comprises determining a value of the second data entry prior to the error, wherein the previous copy corresponds to a time prior to the error.

5. The method of claim 1 , further comprising:

determining that a second data entry was removed from the database after the restore time, wherein restoring the database comprises adding the second data entry to the database.

6. The method of claim 1 , further comprising:

retrieving an identifier of a second data entry that was modified after the restore time,

wherein querying the change log comprises querying the one or more change records in reverse chronological order using the identifier of the second data entry.

7. The method of claim 1 , wherein the one or more change records indicate previous values for the one or more data entries, updated values for the one or more data entries, identifiers of the one or more data entries, and times at which the one or more data entries were modified.

8. The method of claim 1 , wherein determining the respective previous values of the one or more data entries comprises:

retrieving previous values for the one or more data entries from a plurality of data sources comprising the previous copy of the database within the database restore system.

9. The method of claim 1 , wherein determining the respective previous values of the one or more data entries comprises:

identifying previous values of the one or more data entries by querying one or more indices corresponding to the previous copy of the database.

10. The method of claim 1 , wherein the restore time for the database is selected by a user of the database restore system.

11. The method of claim 1 , wherein the previous copy of the database comprises a latest version of the database prior to the restore time.

12. The method of claim 11 , further comprising:

selecting the latest version of the database from two or more versions of the database stored at the database restore system based at least in part on creation times associated with the two or more versions.

13. The method of claim 1 , wherein performing the partial restoration comprises:

refraining from processing a remainder of data entries in the database other than the one or more data entries.

14. An apparatus, comprising:

a processor; and

memory coupled with the processor, the memory comprising instructions that are executable by the processor to cause the apparatus to:

detect an error in a database supported by a database restore system;

determine a restore time for the database based at least in part on detection of the error, the restore time occurring prior to the error;

query a change log stored at the database restore system to identify one or more data entries in the database that were modified after the restore time, the change log comprising one or more change records corresponding to the one or more data entries, the one or more data entries comprising a subset of total data entries in the database;

determine that a data entry associated with a data entry identifier was added to the database after the restore time based at least in part on the one or more change records not comprising the data entry identifier;

determine respective previous values of the one or more data entries from a previous copy of the database stored at the database restore system, the previous copy being based at least in part on a full backup copy of the database and corresponding to a time period prior to the restore time; and

perform a partial restoration of the database by reverting the one or more data entries to the respective previous values of the one or more data entries, wherein performing the partial restoration of the database comprises removing the data entry from the database.

15. The apparatus of claim 14 , wherein the instructions are further executable by the processor to cause the apparatus to:

identify one or more partial changes made to the database after the restore time, wherein the respective previous values of the one or more data entries is determined using the one or more partial changes.

16. The apparatus of claim 14 , wherein the instructions are further executable by the processor to cause the apparatus to:

receive, via a user interface, a user input that indicates a time at which the error occurred within the database, wherein the detection of the error is based at least in part on the user input.

17. The apparatus of claim 14 , wherein the instructions are further executable by the processor to cause the apparatus to:

receive, via a user interface, a user input that indicates a second data entry affected by the error, wherein the instructions to determine the respective previous values of the one or more data entries are executable by the processor to cause the apparatus to determine a value of the second data entry prior to the error, wherein the previous copy corresponds to a time prior to the error.

18. The apparatus of claim 14 , wherein the instructions are further executable by the processor to cause the apparatus to:

retrieve an identifier of a second data entry that was modified after the restore time, wherein the instructions to query the change log are executable by the processor to cause the apparatus to query the one or more change records in reverse chronological order using the identifier of the second data entry.

19. A non-transitory computer-readable medium storing code for database restoration, the code comprising instructions that are executable by a processor to:

detect an error in a database supported by a database restore system;

determine a restore time for the database based at least in part on detection of the error, the restore time occurring prior to the error;

query a change log stored at the database restore system to identify one or more data entries in the database that were modified after the restore time, the change log comprising one or more change records corresponding to the one or more data entries, the one or more data entries comprising a subset of total data entries in the database;

determine that a data entry associated with a data entry identifier was added to the database after the restore time based at least in part on the one or more change records not comprising the data entry identifier;

determine respective previous values of the one or more data entries from a previous copy of the database stored at the database restore system, the previous copy being based at least in part on a full backup copy of the database and corresponding to a time period prior to the restore time; and

perform a partial restoration of the database by reverting the one or more data entries to the respective previous values of the one or more data entries, wherein performing the partial restoration of the database comprises removing the data entry from the database.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 64659/0236 Recorded Jun 13, 2025
From: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
To: RUBRIK, INC.
Reel/Frame 071566/0187 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Aug 21, 2023
From: RUBRIK, INC.
To: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
Reel/Frame 064659/0236 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2022
From: ZHOU, PIN; SARKAR, PRASENJIT
To: RUBRIK, INC.
Reel/Frame 060318/0171 →
Continuity (3)
Continuation 16151263 · Oct 3, 2018
Provisional Application 62567499 · Oct 3, 2017
Related Publication 20220327026A1 · Oct 13, 2022
References Cited (72)
US 6324548B1 · Sorenson · 2001 [cited by applicant]
US 6701345B1 · Carley · 2004 [cited by examiner]
US 7620785B1 · Coulter et al. · 2009 [cited by applicant]
US 8244685B2 · Fiske · 2012 [cited by examiner]
US 8478726B2 · Habermann et al. · 2013 [cited by applicant]
US 9558072B1 · Mam · 2017 [cited by applicant]
US 9563655B2 · Chen et al. · 2017 [cited by applicant]
US 10049020B2 · French et al. · 2018 [cited by applicant]
US 10713124B2 · Luo et al. · 2020 [cited by applicant]
US 11216344B2 · Kochar et al. · 2022 [cited by applicant]
US 11416344B2 · Zhou et al. · 2022 [cited by applicant]
US 20020007363A1 · Vaitzblit · 2002 [cited by examiner]
US 20030061537A1 · Cha · 2003 [cited by examiner]
US 20030191782A1 · Buxton · 2003 [cited by examiner]
US 20030220950A1 · Hiraoka · 2003 [cited by examiner]
US 20040181560A1 · Romanufa · 2004 [cited by examiner]
US 20050081118A1 · Cheston · 2005 [cited by examiner]
US 20050120064A1 · Sinha et al. · 2005 [cited by applicant]
US 20070083530A1 · Lakshminath · 2007 [cited by examiner]
US 20070185922A1 · Kapoor et al. · 2007 [cited by applicant]
US 20070294495A1 · Uchida et al. · 2007 [cited by applicant]
US 20080229142A1 · Anand · 2008 [cited by examiner]
US 20080270838A1 · Dorai et al. · 2008 [cited by applicant]
US 20080285449A1 · Larsson · 2008 [cited by examiner]
US 20090228429A1 · Diaconu · 2009 [cited by examiner]
US 20090323970A1 · Cerruti · 2009 [cited by examiner]
US 20100017573A1 · Shinozaki et al. · 2010 [cited by applicant]
US 20110087874A1 · Timashev · 2011 [cited by examiner]
US 20110161295A1 · Ngo · 2011 [cited by applicant]
US 20110161327A1 · Pawar · 2011 [cited by examiner]
US 20110258164A1 · Mandagere et al. · 2011 [cited by applicant]
US 20120110287A1 · Han et al. · 2012 [cited by applicant]
US 20130111266A1 · Tosaka · 2013 [cited by examiner]
US 20140108367A1 · Kim · 2014 [cited by examiner]
US 20140115232A1 · Goss et al. · 2014 [cited by applicant]
US 20140250085A1 · Sorenson · 2014 [cited by examiner]
US 20150112591A1 · Kim · 2015 [cited by examiner]
US 20150261623A1 · Ho et al. · 2015 [cited by applicant]
US 20150370644A1 · Graefe · 2015 [cited by examiner]
US 20160110268A1 · Sekiguchi et al. · 2016 [cited by applicant]
US 20160117228A1 · Farlee et al. · 2016 [cited by applicant]
US 20160306709A1 · Shaull · 2016 [cited by examiner]
US 20170075764A1 · Banister · 2017 [cited by applicant]
US 20170212902A1 · Graefe · 2017 [cited by examiner]
US 20170230177A1 · Barbas et al. · 2017 [cited by applicant]
US 20180032411A1 · Thakur · 2018 [cited by examiner]
US 20180137016A1 · Brown et al. · 2018 [cited by applicant]
US 20180373604A1 · Martin et al. · 2018 [cited by applicant]
US 20190073372A1 · Venkatesan et al. · 2019 [cited by applicant]
US 20190102257A1 · Zhou et al. · 2019 [cited by applicant]
US 20190155699A1 · Luo et al. · 2019 [cited by applicant]
US 20210117293A1 · Luo et al. · 2021 [cited by applicant]
US 20210224166A1 · Luo et al. · 2021 [cited by applicant]
US 20210357297A1 · Kochar et al. · 2021 [cited by applicant]
US 20220058093A1 · Kochar et al. · 2022 [cited by applicant]
US 20220114064A1 · Gupta · 2022 [cited by examiner]
EP 188649933 · 2018 [cited by applicant]
WO PCTUS2018054256 · 2018 [cited by applicant]
WO WO2019070915A1 · 2019 [cited by applicant]
ISA/US, International App. No. PCT/US2018/054256, International Search Report and Written Opinion dated Dec. 4, 2018, 7 pages. [cited by applicant]
EP Application No. 18864993.3, Extended European Search Report dated Oct. 23, 2020, 8 pages. [cited by applicant]
Osuna, et al. “Introduction to SnapManager for Virtual infrastructure,” SnapManager 2.0 for Virtual Infrastructure Best Practices, IBM Corp., 2010, 6 pages. [cited by applicant]
Rubrik, “Rubrik Announces Andes 5.0 Release, Enabling Global Enterprises to Protect, Automate, and Govern Mission-Critical Applications and Data Across Hybrid Clouds”, www.rubrik.com, 2020, 7 pages. [cited by applicant]
Rubrik, “Rubrik Andes 5.0: Protect, Automate, and Govern Mission-critical Applications Across Hybrid Cloud”, www.rubrik.com, Nov. 12, 2018, 2 pages. [cited by applicant]
Rubrik, “Game-Changing Innovation for Oracle Data Management,” www.rubrik.com, Nov. 12, 2018, 4 pages. [cited by applicant]
U.S. Appl. No. 62/567,499, filed Oct. 3, 2017. [cited by applicant]
U.S. Appl. No. 16/151,263, filed Oct. 3, 2018, now U.S. Pat. No. 11,416,344 B. [cited by applicant]
U.S. Appl. No. 15/819,373, filed Nov. 21, 2017, now U.S. Pat. No. 10,713,124 B2. [cited by applicant]
U.S. Appl. No. 16/890,542, filed Jun. 2, 2020. [cited by applicant]
U.S. Appl. No. 17/143,081, filed Jan. 6, 2021. [cited by applicant]
U.S. Appl. No. 15/931,291, filed May 13, 2020, now U.S. Pat. No. 11,216,344 B2. [cited by applicant]
U.S. Appl. No. 17/517,895, filed Nov. 3, 2021. [cited by applicant]