IP Library › Granted Patent US 12,380,000
Granted Patent B1
US 12,380,000 · App. 17/108,779 · Granted Aug 5, 2025

Database table restoration for data with skewed distribution

Inventors: Divyank Duvedi (Seattle, WA); Anurag Mishra (Redmond, WA); Chase Kernan (Seattle, WA); Richard Krog (Bainbridge Island, WA)
Assignee: Amazon Technologies, Inc.
G06F11/1464G06F11/1451G06F11/1469G06F16/2282G06F16/278G06F2201/80G06F2201/84
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,380,000
App. No.
17/108,779
Filed
Dec 1, 2020
Granted
Aug 5, 2025
Kind
B1
Examiner
WU, TONY
Art Unit
2166
USPC
707/640
Abstract

A database management system obtains key ranges associated with partitions of a database table, and determines that restoration of data associated with at least one of these partitions would take time that is estimated to exceed a goal time. The database management system splits a partition into two or more additional partitions, so that the respective estimated restoration times for data associated with the additional partitions is estimated to be less than the goal time. The database management system then causes the database table to be restored according to partitions that comprises the additional partitions.

Claims (48)

1. A system, comprising:

at least one processor; and

a memory comprising instructions that, in response to execution by the at least one processor, cause the system to at least:

obtain, from a backup of a database table, information indicative of key ranges associated with a first plurality of partitions of the database table hosted on a plurality of corresponding computing nodes;

determine a size of data associated with a partition of the first plurality of partitions of the database table;

estimate a duration required to restore data associated with the partition;

split, in response to a determination that the duration to restore the data associated with the partition is estimated to exceed a goal duration, the partition into two or more additional partitions until an estimated restore duration of the two or more additional partitions is less than the goal duration, wherein each of the two or more additional partitions are hosted on additional corresponding computing nodes, wherein the partition is split by at least mapping the key ranges associated with the first plurality of partitions to the two or more additional partitions; and

cause the database table to be restored according to a second plurality of partitions of the database table, wherein the second plurality of partitions comprises the two or more additional partitions.

2. The system of claim 1 , the memory comprising further instructions that, in response to execution by the at least one processor, cause the system to at least:

estimate the restore duration based at least in part on a write capacity of a storage device to store the data associated with the partition, and based at least in part on a size of the data associated with the partition.

3. The system of claim 1 , wherein the backup of the database table comprises one or more snapshots storing the data associated with the partition.

4. The system of claim 1 , the memory comprising further instructions that, in response to execution by the at least one processor, cause the system to at least:

obtain information indicative of a point-in-time for restoring the database table;

obtain the information indicative of key ranges associated with the first plurality of partitions, such that the information corresponds to key ranges in effect as of the point-in-time; and

determine the size of data associated with the partition as of the point-in-time.

5. The system of claim 1 , the memory comprising further instructions that, in response to execution by the at least one processor, cause the system to at least:

determine that a total number of partitions would exceed a maximum number of partitions; and

combine two or more additional partitions into one combined partition, wherein the second plurality of partitions comprises the combined partition.

6. A computer-implemented method, comprising:

obtaining information indicative of key ranges associated with a first plurality of partitions of a database table hosted on two or more corresponding nodes, the database table to be restored according to a second plurality of partitions;

determining that restoration of data associated with a partition of the first plurality of partitions of the database table is estimated to take an amount of time that exceeds a goal duration;

in response to the determination, splitting the partition into two or more additional partitions until respective estimated restoration duration for data associated with the two or more additional partitions is estimated to be less than the goal duration, wherein each of the two or more additional partitions are hosted on additional corresponding nodes, wherein splitting the partition comprises mapping the key ranges associated with the first plurality of partitions to key ranges associated with the two or more additional partitions; and

causing the database table to be restored according to the second plurality of partitions of the database table, wherein the second plurality of partitions comprises the two or more additional partitions.

7. The computer-implemented method of claim 6 , wherein the information indicative of key ranges associated with the first plurality of partitions is obtained from a backup of the database table.

8. The computer-implemented method of claim 6 , further comprising:

estimating an amount of time to restore the data associated with the partition based at least in part on write capacity of a storage device that is selected to store the data associated with the partition.

9. The computer-implemented method of claim 6 , further comprising:

estimating an amount of time to restore the data associated with the partition based at least in part on a size of the data associated with the partition.

10. The computer-implemented method of claim 6 , further comprising:

obtaining information indicative of size of the data associated with the partition from one or more files of a backup of the database table.

11. The computer-implemented method of claim 6 , further comprising:

obtaining information indicative of a size of the data associated with the partition from a storage device on which the data associated with the partition is stored.

12. The method of claim 6 , wherein the information indicative of key ranges associated with the first plurality of partitions corresponds to key ranges in effect as of a point-in-time associated with a requested restoration of the table.

13. The method of claim 6 , further comprising: estimating an amount of time to restore the data associated with the partition based at least in part on data stored in the database table at a point-in-time associated with a requested restoration of the table.

14. A non-transitory computer-readable storage medium storing thereon executable instructions that, as a result of being executed by one or more processors of a computer system, cause the computer system to at least:

determine key ranges associated with a first plurality of partitions of a database table hosted on a plurality of corresponding nodes, the database table to be restored according to a second plurality of partitions;

determine that restoration of data associated with a partition of the first plurality of partitions of the database table is estimated to take an amount of time exceeding a goal amount of time;

in response to the determination, divide the partition into two or more additional partitions until respective estimated restoration times for respective data associated with the two or more additional partitions is estimated to be less than the goal amount of time, each of the two or more additional partitions being hosted on additional corresponding nodes, wherein the divided partition comprises an updated mapping of the key ranges to the two or more additional partitions; and

initiate restoration of the database table according to the second plurality of partitions, wherein the second plurality of partitions comprises the two or more additional partitions.

15. The non-transitory computer-readable storage medium of claim 14 , the non-transitory computer-readable storage medium storing thereon further executable instructions that, as a result of being execute by the one or more processors, cause the computer system to at least:

obtain information indicative of the key ranges associated with the first plurality of partitions from a backup of the database table.

16. The non-transitory computer-readable storage medium of claim 14 , the non-transitory computer-readable storage medium storing thereon further executable instructions that, as a result of being executed by the one or more processors, cause the computer system to at least:

estimate an amount of time to restore the partition based at least in part on write capacity of a storage device to store data associated with the partition upon restoration, and based at least in part on a size of the data associated with the partition.

17. The non-transitory computer-readable storage medium of claim 14 , wherein a size of the data associated with the partition is determined based, at least in part, on one or more files of a backup of the partition.

18. The non-transitory computer-readable storage medium of claim 14 , wherein the key ranges associated with the first plurality of partitions corresponds to key ranges in effect as of a point-in-time associated with a requested restoration of the table.

19. The non-transitory computer-readable storage medium of claim 14 , the non-transitory computer-readable storage medium storing thereon further executable instructions that, as a result of being executed by the one or more processors, cause the computer system to at least:

estimate an amount of time to restore the data associated with the partition based at least in part on data stored in the table at a point-in-time associated with a requested restoration of the table.

20. The non-transitory computer-readable storage medium of claim 14 , wherein the partition is recursively divided into additional partitions until respective sizes of data associated with the additional partitions are each indicative of a restoration time estimated to be less than the goal amount of time.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2020
From: DUVEDI, DIVYANK; MISHRA, ANURAG; KERNAN, CHASE; KROG, RICHARD
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 054508/0700 →
References Cited (142)
US 5434994A · Shaheen et al. · 1995 [cited by applicant]
US 5574878A · Onodera et al. · 1996 [cited by applicant]
US 6463509B1 · Teoman et al. · 2002 [cited by applicant]
US 7502960B1 · Todd et al. · 2009 [cited by applicant]
US 7788664B1 · Janakiraman et al. · 2010 [cited by applicant]
US 7895261B2 · Jones et al. · 2011 [cited by applicant]
US 7975102B1 · Hyer, Jr. et al. · 2011 [cited by applicant]
US 8280853B1 · Lai et al. · 2012 [cited by applicant]
US 8285687B2 · Voll et al. · 2012 [cited by applicant]
US 8538926B2 · Barton et al. · 2013 [cited by applicant]
US 8589574B1 · Cormie et al. · 2013 [cited by applicant]
US 8688660B1 · Sivasubramanian et al. · 2014 [cited by applicant]
US 8725968B2 · Wada · 2014 [cited by applicant]
US 8768916B1 · Ghazal · 2014 [cited by examiner]
US 8849758B1 · Sivasubramanian et al. · 2014 [cited by applicant]
US 8850144B1 · Natanzon et al. · 2014 [cited by applicant]
US 9003227B1 · Patel et al. · 2015 [cited by applicant]
US 9052831B1 · Stefani et al. · 2015 [cited by applicant]
US 9110600B1 · Brooker et al. · 2015 [cited by applicant]
US 9244958B1 · MacCanti · 2016 [cited by examiner]
US 9246996B1 · Brooker et al. · 2016 [cited by applicant]
US 9503517B1 · Brooker et al. · 2016 [cited by applicant]
US 9563385B1 · Kowalski et al. · 2017 [cited by applicant]
US 9665307B1 · LeCrone et al. · 2017 [cited by applicant]
US 9720620B1 · Wei et al. · 2017 [cited by applicant]
US 9823840B1 · Brooker et al. · 2017 [cited by applicant]
US 9826030B1 · Dhoolam et al. · 2017 [cited by applicant]
US 9946604B1 · Glass · 2018 [cited by applicant]
US 10055352B2 · Wei et al. · 2018 [cited by applicant]
US 10423348B1 · Messing et al. · 2019 [cited by applicant]
US 10423493B1 · Vig · 2019 [cited by examiner]
US 10452296B1 · Greenwood et al. · 2019 [cited by applicant]
US 10459655B1 · Greenwood et al. · 2019 [cited by applicant]
US 10505862B1 · Dhoolam et al. · 2019 [cited by applicant]
US 10768850B2 · Muniswamy-Reddy et al. · 2020 [cited by applicant]
US 10931750B1 · Labovich et al. · 2021 [cited by applicant]
US 10956442B1 · Labovich et al. · 2021 [cited by applicant]
US 10983719B1 · Williams et al. · 2021 [cited by applicant]
US 11023157B2 · Greenwood et al. · 2021 [cited by applicant]
US 11068192B1 · Greenwood et al. · 2021 [cited by applicant]
US 11093148B1 · Greenwood et al. · 2021 [cited by applicant]
US 11182095B2 · Greenwood et al. · 2021 [cited by applicant]
US 11343314B1 · Muniswamy-Reddy et al. · 2022 [cited by applicant]
US 20020059253A1 · Albazz et al. · 2002 [cited by applicant]
US 20020144070A1 · Watanabe et al. · 2002 [cited by applicant]
US 20030028737A1 · Kaiya et al. · 2003 [cited by applicant]
US 20030050974A1 · Mani-Meitav et al. · 2003 [cited by applicant]
US 20030191930A1 · Viljoen et al. · 2003 [cited by applicant]
US 20030204597A1 · Arakawa et al. · 2003 [cited by applicant]
US 20040078419A1 · Ferrari et al. · 2004 [cited by applicant]
US 20050148356A1 · Ferguson et al. · 2005 [cited by applicant]
US 20050193113A1 · Kokusho et al. · 2005 [cited by applicant]
US 20060080362A1 · Wagner et al. · 2006 [cited by applicant]
US 20060271530A1 · Bauer · 2006 [cited by applicant]
US 20070226436A1 · Cheng et al. · 2007 [cited by applicant]
US 20080086616A1 · Asano et al. · 2008 [cited by applicant]
US 20080126699A1 · Sangapu et al. · 2008 [cited by applicant]
US 20080140883A1 · Salessi et al. · 2008 [cited by applicant]
US 20080140905A1 · Okuyama et al. · 2008 [cited by applicant]
US 20090077140A1 · Anglin et al. · 2009 [cited by applicant]
US 20090222632A1 · Sasage et al. · 2009 [cited by applicant]
US 20090228889A1 · Yoshida · 2009 [cited by applicant]
US 20090249470A1 · Litvin et al. · 2009 [cited by applicant]
US 20100037009A1 · Yano et al. · 2010 [cited by applicant]
US 20100070725A1 · Prahlad et al. · 2010 [cited by applicant]
US 20100191922A1 · Dickey et al. · 2010 [cited by applicant]
US 20100312983A1 · Moon et al. · 2010 [cited by applicant]
US 20110016450A1 · Karadakal · 2011 [cited by applicant]
US 20110191554A1 · Sakai et al. · 2011 [cited by applicant]
US 20120030318A1 · Ryder · 2012 [cited by applicant]
US 20120030343A1 · Ryder · 2012 [cited by applicant]
US 20120079221A1 · Sivasubramanian et al. · 2012 [cited by applicant]
US 20120079505A1 · Tarta et al. · 2012 [cited by applicant]
US 20120215835A1 · Takano et al. · 2012 [cited by applicant]
US 20120246511A1 · Sato · 2012 [cited by applicant]
US 20120254687A1 · Leggette et al. · 2012 [cited by applicant]
US 20120303576A1 · Calder et al. · 2012 [cited by applicant]
US 20130007753A1 · Jain · 2013 [cited by applicant]
US 20130036091A1 · Provenzano et al. · 2013 [cited by applicant]
US 20130046966A1 · Chu et al. · 2013 [cited by applicant]
US 20130054890A1 · Desai et al. · 2013 [cited by applicant]
US 20130055248A1 · Sokolinski et al. · 2013 [cited by applicant]
US 20130086585A1 · Huang et al. · 2013 [cited by applicant]
US 20130104126A1 · Padmanabhuni et al. · 2013 [cited by applicant]
US 20130198459A1 · Joshi et al. · 2013 [cited by applicant]
US 20130254590A1 · Chercoles Sanchez · 2013 [cited by examiner]
US 20130268575A1 · Xu · 2013 [cited by applicant]
US 20130304903A1 · Mick et al. · 2013 [cited by applicant]
US 20130311513A1 · Piedmonte · 2013 [cited by examiner]
US 20140115287A1 · Schnapp et al. · 2014 [cited by applicant]
US 20140136482A1 · Rochette · 2014 [cited by applicant]
US 20140181046A1 · Pawar et al. · 2014 [cited by applicant]
US 20140280441A1 · Jacobson et al. · 2014 [cited by applicant]
US 20140351636A1 · Yin et al. · 2014 [cited by applicant]
US 20140359130A1 · Southern et al. · 2014 [cited by applicant]
US 20150128053A1 · Bragstad et al. · 2015 [cited by applicant]
US 20150134615A1 · Goodman et al. · 2015 [cited by applicant]
US 20150134723A1 · Kansal et al. · 2015 [cited by applicant]
US 20150139168A1 · Zhi et al. · 2015 [cited by applicant]
US 20150160885A1 · Hara et al. · 2015 [cited by applicant]
US 20150286432A1 · Dain et al. · 2015 [cited by applicant]
US 20150370483A1 · Schoebel-Theuer · 2015 [cited by applicant]
US 20160026395A1 · Lee · 2016 [cited by applicant]
US 20160036938A1 · Aviles et al. · 2016 [cited by applicant]
US 20160085651A1 · Factor et al. · 2016 [cited by applicant]
US 20160224244A1 · Gensler, Jr. et al. · 2016 [cited by applicant]
US 20160291889A1 · Dawson et al. · 2016 [cited by applicant]
US 20170024764A1 · Mooser et al. · 2017 [cited by applicant]
US 20170078383A1 · Murstein · 2017 [cited by examiner]
US 20170147243A1 · Kowalski et al. · 2017 [cited by applicant]
US 20170192857A1 · Meiri et al. · 2017 [cited by applicant]
US 20170222935A1 · Kalman et al. · 2017 [cited by applicant]
US 20170237809A1 · Farinacci et al. · 2017 [cited by applicant]
US 20170329528A1 · Wei et al. · 2017 [cited by applicant]
US 20180173874A1 · Muttik et al. · 2018 [cited by applicant]
US 20180322017A1 · Maccanti · 2018 [cited by examiner]
US 20180329935A1 · Mugali et al. · 2018 [cited by applicant]
US 20180359336A1 · Chattopadhyay et al. · 2018 [cited by applicant]
US 20190042636A1 · Sipka et al. · 2019 [cited by applicant]
US 20190332268A1 · Greenwood et al. · 2019 [cited by applicant]
US 20190332269A1 · Greenwood et al. · 2019 [cited by applicant]
US 20190347352A1 · Gochkov et al. · 2019 [cited by applicant]
US 20200142596A1 · Greenwood et al. · 2020 [cited by applicant]
US 20200192761A1 · Ponce · 2020 [cited by examiner]
US 20200285542A1 · Deshpande · 2020 [cited by examiner]
US 20210124652A1 · Srinivasan · 2021 [cited by examiner]
AU 2019262799B2 · 2021 [cited by applicant]
CN 112470112A · 2021 [cited by applicant]
EP 3788466A1 · 2021 [cited by applicant]
IN 202017046394 · 2021 [cited by applicant]
JP 2021521551A · 2021 [cited by applicant]
KR 1020210003217A · 2021 [cited by applicant]
WO 2011088261A2 · 2011 [cited by applicant]
WO 2017028885A1 · 2017 [cited by applicant]
WO 2019212768A1 · 2019 [cited by applicant]
“Amazon Simple Storage Service (S3) Guide,” downloaded on Nov. 3, 2023 from http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html, 18 pages. [cited by applicant]
“AWS Amazon Elastic Block Store (EBS)” downloaded Nov. 3, 2023 from https://aws.amazon.com/ebs/?did=ft_card&trk=ft_card, 7 pages. [cited by applicant]
“Feature Guide: Elastic Block Store: Articles & Tutorials: Amazon Web Services,” Aug. 20, 2008, downloaded Nov. 3, 2023 from aws.amazon.com/articles/1667, 11 pages. [cited by applicant]
Hyser, et al, “Autonomic Virtual Machine placement in the Data Center,” Hewlett Packard Laboratories, HPL-2007-189, Dec. 11, 2007, 11 pages. [cited by applicant]
International Search Report and Written Opinion mailed Jul. 11, 2019, Patent Application No. PCT/US2019/028320, 3 pages. [cited by applicant]
Reich, et al, “VMTorrent: Scalable P2P Virtual Machine Streaming,” Dec. 10, 2012, 12 pages. [cited by applicant]
Waldspurger, “Memory Resource Management in VMware ESX Server,” Proc. Fifth Symposium on Operating Systems Design and Implementation (OSDI'02), Dec. 10, 2002, 14 pages. [cited by applicant]