IP Library Granted Patent US 10,157,186
Granted Patent B2
US 10,157,186 · App. 14/179,462 · Granted Dec 18, 2018

Data handling

Inventors: Mitesh Pankaj Patel (Bellevue, WA); Miko Arnab Sakhya Singha Bose (Seattle, WA); Simon Peter Clarke (Seattle, WA); David Oliver (Bellevue, WA); Andrew Watson (Seattle, WA); Ming-wei Wang (Redmond, WA); Steven Rayson (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F17/30194G06F17/30203
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 10,157,186
App. No.
14/179,462
Granted
Dec 18, 2018
Kind
B2
Abstract

The concepts relate to data handling, and more specifically to data handling scenarios where data is revised on one computer and stored on another computer. One example can obtain a set of blobs relating to revisions of a file. The example can determine a target size of datastore blobs. In an instance where a total size of the set of blobs is less than the target size, this example can aggregate the set of blobs into an individual datastore blob. Otherwise, the example can identify new or edited individual blobs of the set and aggregate the new or edited individual blobs into first datastore blobs. The example can also aggregate other individual blobs of the set into second datastore blobs.

Claims (67)

1. A method performed by a computing device, the method comprising:

receiving a set of multiple client-side data units individually having a client-side unit size from a client-side device, the multiple client-side data units individually being a part of a file revised at the client-side device;

determining whether a total size of the set of multiple client-side data units is larger than a datastore blob target size of datastore blobs in a datastore; and

in response to determining that the total size of the set of multiple client-side data units is greater than the datastore blob target size,

identifying a first subset of the client-side data units that are new or revised in comparison with an existing version of the file in the datastore;

determining a number of the client-side data units that are containable in a datastore blob without exceeding the datastore blob target size based on the client-side unit size and the datastore blob target size;

generating one or more first datastore blobs by aggregating the determined number of multiple client-side data units from the identified first subset of new or edited client-side data units such that the generated one or more first datastore blobs individually having a size that approximates but not exceeding the datastore blob target size;

storing the generated one or more first datastore blobs in the datastore;

generating one or more second datastore blobs from a second subset of the client-side data units, the generated one or more second datastore blobs having corresponding copies already existing in the datastore; and

updating a map in the datastore to indicate that a new version of the file contains the stored one or more first datastore blobs and the existing one or more second datastore blobs.

2. The method of claim 1 wherein receiving the set of multiple client-side data units includes receiving the set of multiple client-side data units individually having an indication of being new, edited, or unchanged.

3. The method of claim 1 wherein:

receiving the set of multiple client-side data units includes receiving the set of multiple client-side data units individually having an indication of being new, edited, or unchanged; and

identifying the first subset of the client-side data units includes identifying the first subset of the client-side data units based on the indications associated with the individual client-side data units.

4. The method of claim 1 wherein receiving the set of multiple client-side data units includes receiving the set of multiple client-side data units individually having a size smaller than the datastore blob target size.

5. The method of claim 1 wherein:

receiving the set of multiple client-side data units includes receiving the set of multiple client-side data units individually having a size smaller than the datastore blob target size; and

generating the one or more first datastore blobs includes grouping the first subset of the new or edited client-side data units into the one or more first datastore blobs individually having the size that approximates but not exceeding the datastore blob target size.

6. The method of claim 1 wherein storing the generated one or more first datastore blobs includes writing the generated one or more first datastore blobs in the datastore without writing the one or more second datastore blobs.

7. The method of claim 1 wherein identifying a first subset of the client-side data units includes comparing the received set of multiple client-side data units of the file with a previous version of the file in the datastore.

8. The method of claim 1 wherein:

the one or more first and second datastore blobs individually having a storage index; and

updating the map includes updating the storage indices associated with the new version of the file.

9. A method performed by a computing device, the method comprising:

receiving a file from a client side device, the file being divided into multiple client-side data units individually having a client-side unit size;

determining whether a total size of the multiple client-side data units is larger than a datastore blob target size of datastore blobs in a datastore; and

in response to determining that the total size of multiple client-side data units is greater than the datastore blob target size,

identifying a first subset of the multiple client-side data units that are new or revised in comparison with an existing version of the file in a cloud-based datastore and a second subset of the multiple client-side data units that have corresponding copies already existing in the cloud-based datastore, the cloud-based datastore storing the existing version of the file in multiple storage units individually having a storage unit size larger than the client-side unit size;

determining a number of client-side data units that can be contained in one of the first datastore blobs without exceeding the storage unit size based on the client-side unit size and the storage unit size;

combining the determined number of the client-side data units from the first subset of the client-side data units into one or more first datastore blobs and the second subset of the client-side data units into one or more second datastore blobs, the first datastore blobs individually containing multiple client-side data units from the first subset and having a size that approximates but does not exceed the storage unit size;

storing the one or more first datastore blobs in the cloud-based datastore without writing the one or more second datastore blobs in the cloud-based datastore; and

updating a map in the cloud-based datastore to indicate that a new version of the file contains the one or more first datastore blobs written to the cloud-based datastore and the existing one or more second datastore blobs.

10. The method of claim 9 wherein receiving the file includes receiving the multiple client-side data units individually having an indication of being new, edited, or unchanged.

11. The method of claim 9 wherein:

receiving the set of multiple client-side data units includes receiving the set of multiple client-side data units individually having an indication of being new, edited, or unchanged; and

identifying the first subset includes identifying the first subset of the client-side data units based on the indications associated with the individual client-side data units.

12. The method of claim 9 wherein identifying the first subset includes identifying the first subset of the client-side data units by comparing the received set of multiple client-side data units of the file with a previous version of the file in the datastore.

13. The method of claim 9 wherein:

the one or more first and second datastore blobs individually include a storage index; and

updating the map includes updating the storage indices to indicate that the first and second datastore blobs are associated with the new version of the file.

14. The method of claim 9 wherein:

the datastore contains a previous version of the file having a third datastore blob not associated with the new version of the file; and

the method further includes:

determining whether the third datastore blob is associated with any other files in the datastore; and

in response to determining that the third datastore blob is not associated with any files in the datastore, deleting the third datastore blob from the datastore.

15. A computing device, comprising:

a processor; and

a memory containing instructions executable by the processor to cause the computing device to:

in response to receiving, from a client side device, a file that is divided into multiple client-side data units individually having a client-side unit size, determine whether a total size of the multiple client-side data units is larger than a datastore blob target size of datastore blobs in a datastore; and in response to determining that the total size of multiple client-side data units is greater than the datastore blob target size,

identify a first subset of the multiple client-side data units that are new or revised in comparison with an existing version of the file in a cloud-based datastore and a second subset of the multiple client-side data units that have corresponding copies already existing in the cloud-based datastore, the cloud-based datastore storing the existing version of the file in multiple storage units individually having a storage unit size larger than the client-side unit size;

determine a number of client-side data units that can be contained in one of the first datastore blobs without exceeding the storage unit size based on the client-side unit size and the storage unit size;

combine the determined number of client-side data units from the first subset of the client-side data units into one or more first datastore blobs and the second subset of the client-side data units into one or more second datastore blobs, the first datastore blobs individually containing multiple client-side data units from the first subset and having a size that approximates but does not exceed the storage unit size;

store the one or more first datastore blobs in the cloud-based datastore without writing the one or more second datastore blobs in the cloud-based datastore; and

update a map in the cloud-based datastore to indicate that a new version of the file contains the one or more first datastore blobs written to the cloud-based datastore and the existing one or more second datastore blobs.

16. The computing device of claim 15 wherein the multiple client-side data units individually include an indication of being new, edited, or unchanged.

17. The computing device of claim 15 wherein:

the set of multiple client-side data units individually include an indication of being new, edited, or unchanged; and

to identify the first subset includes to identify the first subset of the client-side data units based on the indications associated with the individual client-side data units.

18. The computing device of claim 15 wherein to identify the first subset includes to identify the first subset of the client-side data units by comparing the received set of multiple client-side data units of the file with a previous version of the file in the datastore.

19. The computing device of claim 15 wherein:

the one or more first and second datastore blobs individually include a storage index; and

to update the map includes to update the storage indices to indicate that the first and second datastore blobs are associated with the new version of the file.

20. The computing device of claim 15 wherein:

the datastore contains a previous version of the file having a third datastore blob not associated with the new version of the file; and

the memory contains additional instructions executable by the processor to cause the processor to:

determine whether the third datastore blob is associated with any other files in the datastore; and

in response to determining that the third datastore blob is not associated with any files in the datastore, delete the third datastore blob from the datastore.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2014
From: PATEL, MITESH PANKAJ; BOSE, MIKO ARNAB SAKHYA SINGHA; CLARKE, SIMON PETER; OLIVER, DAVID; WATSON, ANDREW; WANG, MING-WEI; RAYSON, STEVEN
To: MICROSOFT CORPORATION
Reel/Frame 032209/0095 →
Continuity (2)
Provisional Application 61847993 · Jul 18, 2013
Related Publication 20150026143A1 · Jan 22, 2015