IP Library Granted Patent US 12,306,813
Granted Patent B2
US 12,306,813 · App. 18/540,364 · Granted May 20, 2025

Object management system for efficient content item management

Inventors: Anup Chenthamarakshan (Sunnyvale, CA); Adam Faulkner (San Francisco, CA); Ping Hu (San Francisco, CA); Alexander Sosa (San Jose, CA)
Assignee: Dropbox, Inc.
G06F16/215G06F16/22G06F16/2365G06F16/289H04L67/01
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,306,813
App. No.
18/540,364
Granted
May 20, 2025
Kind
B2
Abstract

An object management system (OMS) receives a plurality of objects to be stored. The OMS identifies a subset of objects associated with a same time period and a same namespace from the plurality of objects and generates a batch object comprising the subset of objects. The OMS issues a write request to store the batch object in an object storage system (OSS) and stores, for each object in the subset of objects, a data structure comprising an identifier of the batch object and a position of the object within the batch object. Upon receiving a read request for an object, the OMS determines, based on the data structure, whether the object is stored in the OSS and issues a read request to the OSS based on the identifier of the batch object and the position of the object within the batch, if the objects is stored in the OSS.

Claims (81)

1. A method comprising:

receiving, by an object management system, a plurality of objects to be stored;

identifying, within the plurality of objects, a subset of objects associated with a same set of one or more parameters, the identifying comprising distinguishing the subset of objects from other objects within the plurality of objects that do not share the same set of one or more parameters;

generating a batch object comprising the subset of objects and excluding the other objects;

issuing a write request to store the batch object in an object storage system;

for each object in the subset of objects, storing, by the object management system, an entry in a data structure;

upon receiving, by the object management system, a first read request for a first object in the subset of objects, accessing the data structure to determine whether the object is stored in the object storage system;

based on a determination that the object is stored in the object storage system, issuing a second read request to the object storage system;

detecting that all objects of the subset of objects in the batch object are expired based on an expiration time associated with each object; and

responsive to detecting that all of the subset of objects in the batch object are expired:

sending to the object storage system a request to delete the batch object from the object storage system; and

updating the data structure.

2. The method of claim 1 , wherein the same set of one or more parameters comprises a same time period and a same namespace.

3. The method of claim 1 , wherein the entry comprises an identifier of the batch object and a position of the object within the batch object.

4. The method of claim 1 , wherein storing the data structure further comprises storing metadata associated with each object in the subset of objects to the data structure, the metadata comprising at least one of: a size of the object, the expiration time, a compliance category, the identifier of a batch object, and a position in the batch object.

5. The method of claim 1 , further comprising:

sampling an object from the objects in the batch object;

accessing metadata for the sampled object and metadata of the batch object;

verifying whether the metadata for sampled object is valid;

responsive to detecting that the metadata for the sampled object is invalid, updating the metadata based on information associated with the sampled object; and

outputting a result based on the verifying.

6. The method of claim 1 , further comprising:

determining that the batch object is successfully stored in the object storage system based on the write request;

responsive to determining that the batch object is successfully stored in the object storage system based on the write request, changing a status identifier of the batch object to closed and deleting the batch object from the object management system.

7. The method of claim 1 , wherein issuing the write request further comprises:

determining parameters of the batch object;

determining, from a plurality of candidate object storage systems, that the object storage system satisfies the parameters; and

responsive to determining that the object storage system satisfies the parameters, selecting the object storage system to store the batch object.

8. The method of claim 1 , further comprising:

encrypting each object in the subset of objects with an encryption key; and

generating an encrypted batch object comprising the encrypted objects,

wherein the write request is to store the encrypted batch object to the object storage system.

9. The method of claim 1 , wherein the subset of objects associated with the same set of one or more parameters belong to a same compliance category.

10. The method of claim 1 , further comprising:

determining that a size of an object of the plurality of objects exceeds a threshold of a batch object;

responsive to determining that the size of the object exceeds the threshold, segmenting the object into a plurality of segments; and

storing the plurality of segments using separate batch objects.

11. A non-transitory computer-readable storage medium storing executable computer instructions that, when executed by one or more processors, cause the one or more processors to perform operations, the executable computer instructions comprising instructions to:

receive, by an object management system, a plurality of objects to be stored;

identify, within the plurality of objects, a subset of objects associated with a same set of one or more parameters, the identifying comprising distinguishing the subset of objects from other objects within the plurality of objects that do not share the same set of one or more parameters;

generate a batch object comprising the subset of objects and excluding the other objects;

issue a write request to store the batch object in an object storage system;

for each object in the subset of objects, store, by the object management system, an entry in a data structure;

upon receiving, by the object management system, a first read request for a first object in the subset of objects, access the data structure to determine whether the object is stored in the object storage system;

based on a determination that the object is stored in the object storage system, issue a second read request to the object storage;

detect, based on expiration times associated with a first object in a first batch object and a second object in the first batch object that the first object is expired and that the second object is not expired, wherein the first batch object is associated with a compliance category requiring the first object to be deleted after expiration; and responsive to the detection:

add the second object to a second batch object; and

delete the first batch object.

12. The non-transitory computer-readable medium of claim 11 , wherein the first batch object is associated with a compliance category requiring the first object to be deleted after expiration.

13. The non-transitory computer-readable storage medium of claim 11 , wherein the same set of one or more parameters comprises a same time period and a same namespace.

14. The non-transitory computer-readable storage medium of claim 11 , wherein the instructions to issue the write request comprise instructions to:

determine parameters of the batch object;

determine, from a plurality of candidate object storage systems, that the object storage system satisfies the parameters; and

responsive to determining that the object storage system satisfies the parameters, select the object storage system to store the batch object.

15. The non-transitory computer-readable storage medium of claim 11 , wherein the instructions to issue the write request comprise instructions to:

determine that a size of an object of the plurality of objects exceeds a threshold of a batch object;

responsive to determining that the size of the object exceeds the threshold, segment the object into a plurality of segments; and

store the plurality of segments using separate batch objects.

16. The non-transitory computer-readable storage medium of claim 11 , wherein the instructions further comprise instructions to:

encrypt each object in the subset of objects with an encryption key; and

generate an encrypted batch object comprising the encrypted objects,

wherein the write request is to store the encrypted batch object to the object storage system.

17. A system comprising:

memory with instructions encoded thereon; and one or more processors that, when executing the instructions, perform operations comprising:

receiving, by an object management system, a plurality of objects to be stored;

identifying, within the plurality of objects, a subset of objects associated with a same set of one or more parameters, the identifying comprising distinguishing the subset of objects from other objects within the plurality of objects that do not share the same set of one or more parameters;

generating a batch object comprising the subset of objects and excluding the other objects;

issuing a write request to store the batch object in an object storage system;

for each object in the subset of objects, storing, by the object management system, an entry in a data structure;

upon receiving, by the object management system, a first read request for a first object in the subset of objects, accessing the data structure to determine whether the object is stored in the object storage system;

based on a determination that the object is stored in the object storage system, issuing a second read request to the object storage system;

detecting that all objects of the subset of objects in the batch object are expired based on an expiration time associated with each object; and

responsive to detecting that all of the subset of objects in the batch object are expired:

sending to the object storage system a request to delete the batch object from the object storage system; and

updating the data structure.

18. The system of claim 17 , wherein the same set of one or more parameters comprises a same time period and a same namespace.

19. The system of claim 17 , wherein the entry comprises an identifier of the batch object and a position of the object within the batch object.

20. The system of claim 17 , the operations further comprising:

determining parameters of the batch object;

determining, from a plurality of candidate object storage systems, that the object storage system satisfies the parameters; and

responsive to determining that the object storage system satisfies the parameters, selecting the object storage system to store the batch object.

Assignments (2)
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2024
From: CHENTHAMARAKSHAN, ANUP; FAULKNER, ADAM; HU, PING; SOSA, ALEXANDER
To: DROPBOX, INC.
Reel/Frame 066035/0477 →
Continuity (2)
Continuation 17137092 · Dec 29, 2020
Related Publication 20240111738A1 · Apr 4, 2024
References Cited (17)
US 5937402A · Pandit · 1999 [cited by applicant]
US 6182151B1 · Cheng et al. · 2001 [cited by applicant]
US 8850073B1 · Wilkes · 2014 [cited by applicant]
US 8924974B1 · Ruggiero et al. · 2014 [cited by applicant]
US 20040260972A1 · Ji et al. · 2004 [cited by applicant]
US 20110196829A1 · Vickrey et al. · 2011 [cited by applicant]
US 20110264704A1 · Mehra · 2011 [cited by examiner]
US 20120246129A1 · Rothschild et al. · 2012 [cited by applicant]
US 20140250073A1 · Zalpuri et al. · 2014 [cited by applicant]
US 20170315735A1 · Leggette et al. · 2017 [cited by applicant]
US 20200327097A1 · Birka et al. · 2020 [cited by applicant]
US 20200363979A1 · Viraraghavan et al. · 2020 [cited by applicant]
US 20220083566A1 · Ben Ze'Ev · 2022 [cited by examiner]
EP 3557436A1 · 2019 [cited by applicant]
Final Office Action from U.S. Appl. No. 17/137,092, mailed Aug. 18, 2023, 25 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 17/137,092, mailed Mar. 1, 2023, 23 pages. [cited by applicant]
Notice of Allowance from U.S. Appl. No. 17/137,092, mailed Oct. 19, 2023, 20 pages. [cited by applicant]