IP Library Granted Patent US 11,789,976
Granted Patent B2
US 11,789,976 · App. 17/129,233 · Granted Oct 17, 2023

Data model and data service for content management system

Inventors: Aaron Passey (San Francisco, CA); Braden Walker (San Francisco, CA); Akos Albert (San Francisco, CA)
Assignee: Dropbox, Inc.
G06F16/275G06F16/2282G06F16/2379G06F16/245H04L63/101
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 11,789,976
App. No.
17/129,233
Granted
Oct 17, 2023
Kind
B2
Abstract

The disclosed technology addresses the need in the art for a content management system that can be highly flexible to the needs of its subjects. The present technology permits any object to be shared by providing a robust and flexible access control list mechanism. The present technology utilizes a data structure that is highly efficient that both minimizes the amount of information that needs to be written into any database, but also allows for fast reads and writes of information from authoritative tables that are a source of truth for the content management system, while allowing for maintenance of indexes containing more refined data that allow for efficient retrieval of certain information that would normally need to be calculated when it is needed.

Claims (72)

1. A method comprising:

receiving, at a content management system, data descriptive of changed data occurring relative to objects stored in the content management system;

maintaining a database including at least one table, wherein the at least one table includes immutable rows with fields for the data descriptive of changed data occurring relative to objects stored in the content management system, the fields including at least an object ID referencing a specific object for which data in a respective row in the at least one table pertains, and a clock value recording a system time in which the changed data relative to the specific object represented by the object ID occurred;

maintaining at least one index in addition to the at least one table, wherein data is included in the at least one index when the changed data satisfies a condition for inclusion in the at least one index, wherein the at least one index includes a directory index where the condition for inclusion includes adding an object to a directory;

determining that the changed data satisfies the condition for inclusion; and

updating the directory index based on the changed data, wherein the update includes adding a new row to the directory index.

2. The method of claim 1 comprising:

determining that an activity occurred that is associated with a first object ID by identifying the first object ID in the at least one index, wherein the condition for inclusion of the object ID in the at least one index is that the activity occurred; and

retrieving, from the at least one index, a first system time in which the activity occurred.

3. The method of claim 2 comprising:

querying the at least one table using the first object ID and the first system time to retrieve additional data pertaining to the first object ID at the first system time.

4. The method of claim 1 comprising:

determining that an activity occurred that is associated with a first object ID;

after determining that the activity occurred, updating the at least one table substantially synchronously; and

after determining that the activity occurred, updating the at least one index asynchronously.

5. The method of claim 1 comprising:

constructing a list of ancestors by recursively performing at least the following:

retrieving a next ancestor object ID by looking up a query object ID in the at least one table, wherein the at least one table contains ancestor data;

building the list of ancestors by adding the next ancestor object ID as an ancestor to the query object ID; and

making the next ancestor object ID the query object ID.

6. The method of claim 1 , comprising:

looking up an object ID in an access change simple object index, wherein if the object ID is located in the simple object index there has been an access change for the object ID.

7. The method of claim 1 , comprising:

looking up a changed access control list (ACL) for the object ID having one or more changes at the system time in the at least one table, wherein the at least one table in includes ACL information for the object ID.

8. A non-transitory computer readable medium comprising instructions, the instructions, when executed by a computing system, cause the computing system to:

receive, at a content management system, data descriptive of changed data occurring relative to objects stored in the content management system;

maintain a database including at least one table, wherein the at least one table includes rows with fields for the data descriptive of changed data occurring relative to objects stored in the content management system, the fields including at least an object ID referencing a specific object for which data in a respective row in the at least one table pertains, and a clock value recording a system time in which the changed data relative to the specific object represented by the object ID occurred;

maintain at least one index in addition to the at least one table, wherein data is included in the at least one index when the changed data satisfies a condition for inclusion in the at least one index, wherein the at least one index includes a directory index where the condition for inclusion includes adding an object to a directory;

determine that the changed data satisfies the condition for inclusion; and

update the directory index based on the changed data, wherein the update includes adding a new row to the directory index.

9. The computer readable medium of claim 8 , wherein the computer readable medium further comprises instructions that, when executed by the computing system, cause the computing system to:

determine that an activity occurred that is associated with a first object ID by identify the first object ID in the at least one index, wherein the condition for inclusion of the object ID in the at least one index is that the activity occurred; and

retrieve, from the at least one index, a first system time in which the activity occurred.

10. The computer readable medium of claim 9 , wherein the computer readable medium further comprises instructions that, when executed by the computing system, cause the computing system to:

query the at least one table use the first object ID and the first system time to retrieve additional data pertaining to the first object ID at the first system time.

11. The computer readable medium of claim 8 , wherein the computer readable medium further comprises instructions that, when executed by the computing system, cause the computing system to:

determine that an activity occurred that is associated with a first object ID;

after the determination that the activity occurred update the at least one table substantially synchronously; and

wherein after the determination that the activity occurred, update the at least one index asynchronously.

12. The computer readable medium of claim 8 , wherein the computer readable medium further comprises instructions that, when executed by the computing system, cause the computing system to:

construct a list of ancestors by recursively performing at least the following:

retrieve a next ancestor object ID by look up a query object ID in the at least one table, wherein the at least one table contains ancestor data;

build the list of ancestors by add the next ancestor object ID as an ancestor to the query object ID; and

make the next ancestor object ID the query object ID.

13. The computer readable medium of claim 8 , wherein the computer readable medium further comprises instructions that, when executed by the computing system, cause the computing system to:

look up an object ID in an access change simple object index, wherein if the object ID is located in the simple object index there has been an access change for the object ID.

14. The computer readable medium of claim 8 , wherein the computer readable medium further comprises instructions that, when executed by the computing system, cause the computing system to:

look up a changed access control list (ACL) for the object ID having one or more changes at the system time in the at least one table, wherein the at least one table in includes ACL information for the object ID.

15. A system comprising:

at least one non-transitory computer readable medium storing instructions thereon;

at least one processor configured to execute the instructions and cause the at least one processor to:

receiving, at a content management system, data descriptive of changed data occurring relative to objects stored in the content management system;

maintain a database including at least one table, wherein the at least one table includes rows with fields for the data descriptive of changed data occurring relative to objects stored in the content management system, the fields including at least an object ID referencing a specific object for which data in a respective row in the at least one table pertains, and a clock value recording a system time in which the changed data relative to the specific object represented by the object ID occurred;

maintain at least one index in addition to the at least one table, wherein data is included in the at least one index when the changed data satisfies a condition for inclusion in the at least one index, wherein the at least one index includes a directory index where the condition for inclusion includes adding an object to a directory;

determining that the changed data satisfies the condition for inclusion; and

updating the directory index based on the changed data, wherein the update includes adding a new row to the directory index.

16. The system of claim 15 , wherein the instructions further cause the at least one processor to:

determine that an activity occurred that is associated with a first object ID by identify the first object ID in the at least one index, wherein the condition for inclusion of the object ID in the at least one index is that the activity occurred; and

retrieve, from the at least one index, a first system time in which the activity occurred.

17. The system of claim 16 , wherein the instructions further cause the at least one processor to:

query the at least one table use the first object ID and the first system time to retrieve additional data pertaining to the first object ID at the first system time.

18. The system of claim 15 , wherein the instructions further cause the at least one processor to:

determine that an activity occurred that is associated with a first object ID;

after the determination that the activity occurred update the at least one table substantially synchronously; and

wherein after the determination that the activity occurred, update the at least one index asynchronously.

19. The system of claim 15 , wherein the instructions further cause the at least one processor to:

construct a list of ancestors by recursively performing at least the following:

retrieve a next ancestor object ID by look up a query object ID in the at least one table, wherein the at least one table contains ancestor data;

build the list of ancestors by add the next ancestor object ID as an ancestor to the query object ID; and

make the next ancestor object ID the query object ID.

20. The system of claim 15 , wherein the instructions further cause the at least one processor to:

look up an object ID in an access change simple object index, wherein if the object ID is located in the simple object index there has been an access change for the object ID.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2020
From: PASSEY, AARON; WALKER, BRADEN; ALBERT, AKOS
To: DROPBOX, INC.
Reel/Frame 054713/0267 →