IP Library Granted Patent US 12,235,729
Granted Patent B2
US 12,235,729 · App. 18/397,987 · Granted Feb 25, 2025

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,235,729
App. No.
18/397,987
Granted
Feb 25, 2025
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, the corrupt version of the first data comprising at least one corrupt data file;

identifying a prior version of the first table that comprises a correct version of the first data, the correct version of the first data comprising a correct version of the at least one corrupt data file;

restoring the first data using the correct version of the at least one corrupt data file 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 at least one corrupt data file included in 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 at least one corrupt data file comprises:

replacing, within the first data, the at least one corrupt data file with the correct version of the at least one corrupt data file while maintaining one or more other data files included in the first data.

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

analyzing data lineage for a 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 at least one corrupt data file included in 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, 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.

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, the corrupt version of the first data comprising at least one corrupt data file;

identify a prior version of the first table that comprises a correct version of the first data, the correct version of the first data comprising a correct version of the at least one corrupt data file;

restore the first data using the correct version of the at least one corrupt data file 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 at least one corrupt data file included in 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 at least one corrupt data file, the one or more processors are individually or collectively operable to execute the instructions to cause the system to:

replace, within the first data, the at least one corrupt data file with the correct version of the at least one corrupt data file while maintaining one or more other data files included in the first data.

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 a 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 at least one corrupt data file included in 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, 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.

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, the corrupt version of the first data comprising at least one corrupt data file;

identify a prior version of the first table that comprises a correct version of the first data, the correct version of the first data comprising a correct version of the at least one corrupt data file;

restore the first data using the correct version of the at least one corrupt data file 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 at least one corrupt data file included in 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 at least one corrupt data file, the instructions are executable by the one or more hardware-implemented processors to cause the system to:

replace, within the first data, the at least one corrupt data file with the correct version of the at least one corrupt data file while maintaining one or more other data files included in the first data.

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 a 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 at least one corrupt data file included in 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 Jan 17, 2025
From: THAKUR, TARUN; ZHOU, PIN; SARKAR, PRASENJIT
To: DATOS IO INC.
Reel/Frame 069919/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2025
From: DATOS IO INC.
To: RUBRIK, INC.
Reel/Frame 069920/0052 →
Continuity (3)
Continuation 14988307 · Jan 5, 2016
Provisional Application 62099747 · Jan 5, 2015
Related Publication 20240126655A1 · Apr 18, 2024
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]