IP Library Granted Patent US 12,585,546
Granted Patent B2
US 12,585,546 · App. 19/025,761 · Granted Mar 24, 2026

Data lineage based multi-data store recovery

Inventors: Tarun Thakur (Fremont, CA); Pin Zhou (San Jose, CA); Prasenjit Sarkar (Los Gatos, CA)
Assignee: Rubrik, Inc.
G06F11/1451G06F11/1469G06F16/219G06F16/2329G06F2201/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,585,546
App. No.
19/025,761
Granted
Mar 24, 2026
Kind
B2
Abstract

Embodiments disclosed herein provide systems, methods, and computer readable media for data lineage based multi-data store recovery. In a particular embodiment, a method provides identifying first data in a first table of a plurality of tables stored in a plurality of data stores and restoring the first data to a first correct version of the first data in a prior version of the first table. The method further provides identifying a second table of the plurality of tables that descends from the first table and includes second descendent data that stems from the first data. The method also provides restoring the second descendent data to a second correct version of the second descendent data in a prior version of the second table.

Claims (56)

1 . A method, comprising:

identifying that a first version of a first table of a plurality of tables comprises a corrupt version of first data;

identifying a prior version of the first table that comprises a correct version of the first data;

restoring the first data using the correct version of the first data from the prior version of the first table;

identifying a second table that descends from the first table, the second table including second data that is based at least in part on the corrupt version of the first data;

identifying, for the second table, a prior version of the second table that comprises a correct version of the second data that is based at least in part on the correct version of the first data; and

restoring the second data using the correct version of the second data from the identified prior version of the second table.

2 . The method of claim 1 , wherein restoring the first data using the correct version of the first data comprises:

replacing, within the first table, the corrupt version of the first data with the correct version of the first data while maintaining uncorrupted data included in the first table.

3 . The method of claim 1 , wherein identifying the second table that descends from the first table comprises:

analyzing data lineage for the plurality of tables that comprises the first table and the second table.

4 . The method of claim 1 , further comprising:

identifying a third table that descends from the first table, the third table including third data that is based at least in part on the corrupt version of the first data; and

identifying, for the third table, a prior version of the third table that comprises a correct version of the third data that is based at least in part on the correct version of the first data, wherein the identified prior version of the third table and the identified prior version of the second table are associated with different propagation times for the corrupt version of the first data.

5 . The method of claim 4 , wherein, in accordance with the identified prior version of the third table and the identified prior version of the second table being associated with different propagation times for the corrupt version of the first data, the identified prior version of the third table and the identified prior version of the second table are associated with different timestamps.

6 . The method of claim 1 , wherein:

identifying the prior version of the first table that comprises the correct version of the first data comprises identifying a most recent version of the first table that comprises the correct version of the first data; and

identifying the prior version of the second table that comprises the correct version of the second data comprises identifying a most recent version of the second table that comprises the correct version of the second data.

7 . The method of claim 1 , wherein identifying the second table is responsive to identifying that the first table of the plurality of tables comprises the corrupt version of the first data.

8 . The method of claim 1 , wherein identifying the prior version of the second table that comprises the correct version of the second data is based on an association between the identified prior version of the second table and the identified prior version of the first table that comprises the correct version of the first data.

9 . A system, comprising:

one or more non-transitory computer readable storage media storing processor-executable instructions; and

one or more processors coupled with the one or more non-transitory computer readable storage media, the one or more processors individually or collectively operable to execute the instructions to cause the system to:

identify that a first version of a first table of a plurality of tables comprises a corrupt version of first data;

identify a prior version of the first table that comprises a correct version of the first data;

restore the first data using the correct version of the first data from the prior version of the first table;

identify a second table that descends from the first table, the second table including second data that is based at least in part on the corrupt version of the first data;

identify, for the second table, a prior version of the second table that comprises a correct version of the second data that is based at least in part on the correct version of the first data; and

restore the second data using the correct version of the second data from the identified prior version of the second table.

10 . The system of claim 9 , wherein, to restore the first data using the correct version of the first data, the one or more processors are individually or collectively operable to execute the instructions to cause the system to:

replace, within the first table, the corrupt version of the first data with the correct version of the first data while maintaining uncorrupted data included in the first table.

11 . The system of claim 9 , wherein, to identify the second table that descends from the first table, the one or more processors are individually or collectively operable to execute the instructions to cause the system to:

analyze data lineage for the plurality of tables that comprises the first table and the second table.

12 . The system of claim 9 , wherein the one or more processors are individually or collectively further operable to execute the instructions to cause the system to:

identify a third table that descends from the first table, the third table including third data that is based at least in part on the corrupt version of the first data; and

identify, for the third table, a prior version of the third table that comprises a correct version of the third data that is based at least in part on the correct version of the first data, wherein the identified prior version of the third table and the identified prior version of the second table are associated with different propagation times for the corrupt version of the first data.

13 . The system of claim 12 , wherein, in accordance with the identified prior version of the third table and the identified prior version of the second table being associated with different propagation times for the corrupt version of the first data, the identified prior version of the third table and the identified prior version of the second table are associated with different timestamps.

14 . The system of claim 9 , wherein:

to identify the prior version of the first table that comprises the correct version of the first data, the one or more processors are individually or collectively operable to execute the instructions to cause the system to identify a most recent version of the first table that comprises the correct version of the first data; and

to identify the prior version of the second table that comprises the correct version of the second data, the one or more processors are individually or collectively operable to execute the instructions to cause the system to identify a most recent version of the second table that comprises the correct version of the second data.

15 . The system of claim 9 , wherein the one or more processors are individually or collectively operable to execute the instructions to cause the system to identify the second table responsive to identifying that the first table of the plurality of tables comprises the corrupt version of the first data.

16 . A non-transitory computer readable storage medium, comprising instructions executable by one or more hardware-implemented processors to cause a system to:

identify that a first version of a first table of a plurality of tables comprises a corrupt version of first data;

identify a prior version of the first table that comprises a correct version of the first data;

restore the first data using the correct version of the first data from the prior version of the first table;

identify a second table that descends from the first table, the second table including second data that is based at least in part on the corrupt version of the first data;

identify, for the second table, a prior version of the second table that comprises a correct version of the second data that is based at least in part on the correct version of the first data; and

restore the second data using the correct version of the second data from the identified prior version of the second table.

17 . The non-transitory computer readable storage medium of claim 16 , wherein, to restore the first data using the correct version of the first data, the instructions are executable by the one or more hardware-implemented processors to cause the system to:

replace, within the first table, the corrupt version of the first data with the correct version of the first data while maintaining uncorrupted data included in the first table.

18 . The non-transitory computer readable storage medium of claim 16 , wherein, to identify the second table that descends from the first table, the instructions are executable by the one or more hardware-implemented processors to cause the system to:

analyze data lineage for the plurality of tables that comprises the first table and the second table.

19 . The non-transitory computer readable storage medium of claim 16 , wherein the instructions are further executable by the one or more hardware-implemented processors to cause the system to:

identify a third table that descends from the first table, the third table including third data that is based at least in part on the corrupt version of the first data; and

identify, for the third table, a prior version of the third table that comprises a correct version of the third data that is based at least in part on the correct version of the first data, wherein the identified prior version of the third table and the identified prior version of the second table are associated with different propagation times for the corrupt version of the first data.

20 . The non-transitory computer readable storage medium of claim 19 , wherein, based at least in part on the identified prior version of the third table and the identified prior version of the second table being associated with different propagation times for the corrupt version of the first data, the identified prior version of the third table and the identified prior version of the second table are associated with different timestamps.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2025
From: THAKUR, TARUN; ZHOU, PIN; SARKAR, PRASENJIT
To: DATOS IO INC.
Reel/Frame 070859/0275 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2025
From: DATOS IO INC.
To: RUBRIK, INC.
Reel/Frame 070859/0395 →
Continuity (4)
Continuation 18397987 · Dec 27, 2023
Continuation 14988307 · Jan 5, 2016
Provisional Application 62099747 · Jan 5, 2015
Related Publication 20250156280A1 · May 15, 2025
References Cited (64)
US 6343295B1 · MacLeod et al. · 2002 [cited by applicant]
US 6434558B1 · MacLeod et al. · 2002 [cited by applicant]
US 6460052B1 · Thomas et al. · 2002 [cited by applicant]
US 6778985B1 · Jenkins, Jr. · 2004 [cited by applicant]
US 6983288B1 · Kirkwood et al. · 2006 [cited by applicant]
US 7251669B1 · Arora · 2007 [cited by applicant]
US 7401321B2 · Sit et al. · 2008 [cited by applicant]
US 7552358B1 · Asgar-Deen · 2009 [cited by examiner]
US 7836028B1 · Agarwal et al. · 2010 [cited by applicant]
US 7925640B2 · Mathiske et al. · 2011 [cited by applicant]
US 8244678B1 · Hartland et al. · 2012 [cited by applicant]
US 8255366B1 · Bagley · 2012 [cited by examiner]
US 8266122B1 · Newcombe et al. · 2012 [cited by applicant]
US 8352438B1 · Kennedy · 2013 [cited by applicant]
US 8874519B1 · Payne · 2014 [cited by applicant]
US 8903779B1 · Holenstein et al. · 2014 [cited by applicant]
US 9043680B2 · Meller et al. · 2015 [cited by applicant]
US 9047312B1 · Ten-Pow et al. · 2015 [cited by applicant]
US 9424139B1 · Dutch et al. · 2016 [cited by applicant]
US 9600500B1 · Gupta et al. · 2017 [cited by applicant]
US 20010008024A1 · Inaba · 2001 [cited by applicant]
US 20020143764A1 · Martin et al. · 2002 [cited by applicant]
US 20030061245A1 · Soria et al. · 2003 [cited by applicant]
US 20040034616A1 · Witkowski et al. · 2004 [cited by applicant]
US 20050114404A1 · Pintar et al. · 2005 [cited by applicant]
US 20050138306A1 · Panchbudhe et al. · 2005 [cited by applicant]
US 20060085617A1 · Roberson et al. · 2006 [cited by applicant]
US 20060173879A1 · MacFarlane et al. · 2006 [cited by applicant]
US 20070061353A1 · Bobbin et al. · 2007 [cited by applicant]
US 20070067358A1 · Barrs et al. · 2007 [cited by applicant]
US 20070130232A1 · Therrien et al. · 2007 [cited by applicant]
US 20070162441A1 · Idicula et al. · 2007 [cited by applicant]
US 20070244897A1 · Voskuil et al. · 2007 [cited by applicant]
US 20070271317A1 · Carmel · 2007 [cited by applicant]
US 20080120479A1 · Dick et al. · 2008 [cited by applicant]
US 20080168306A1 · Clement et al. · 2008 [cited by applicant]
US 20090049372A1 · Goldberg · 2009 [cited by applicant]
US 20100114987A1 · Tahiliani et al. · 2010 [cited by applicant]
US 20100325500A1 · Bashir et al. · 2010 [cited by applicant]
US 20110295815A1 · Mandagere et al. · 2011 [cited by applicant]
US 20110296237A1 · Mandagere et al. · 2011 [cited by applicant]
US 20120159078A1 · Doshi et al. · 2012 [cited by applicant]
US 20130024427A1 · Long · 2013 [cited by applicant]
US 20130067191A1 · Mehra et al. · 2013 [cited by applicant]
US 20130275695A1 · Ponsford et al. · 2013 [cited by applicant]
US 20140006853A1 · Dudgeon et al. · 2014 [cited by applicant]
US 20140114907A1 · Kozina et al. · 2014 [cited by applicant]
US 20140114924A1 · Abed et al. · 2014 [cited by applicant]
US 20140181040A1 · Montulli et al. · 2014 [cited by applicant]
US 20140195492A1 · Wilding · 2014 [cited by applicant]
US 20140201160A1 · Kumarasamy et al. · 2014 [cited by applicant]
US 20140201161A1 · Kumarasamy et al. · 2014 [cited by applicant]
US 20140279903A1 · Hsiao et al. · 2014 [cited by applicant]
US 20140279979A1 · Yost et al. · 2014 [cited by applicant]
US 20140280280A1 · Singh · 2014 [cited by applicant]
US 20140337296A1 · Knight · 2014 [cited by examiner]
US 20140379665A1 · Benjamin et al. · 2014 [cited by applicant]
US 20150154234A1 · Sreedharan · 2015 [cited by applicant]
US 20150178171A1 · Bish et al. · 2015 [cited by applicant]
US 20150312243A1 · Ponsford et al. · 2015 [cited by applicant]
US 20150347193A1 · Wolfson et al. · 2015 [cited by applicant]
US 20160042046A1 · Whitehead et al. · 2016 [cited by applicant]
US 20160048487A1 · Briggs et al. · 2016 [cited by applicant]
US 20170220426A1 · Sankar · 2017 [cited by examiner]