IP Library Granted Patent US 11,914,585
Granted Patent B2
US 11,914,585 · App. 17/851,854 · Granted Feb 27, 2024

Servicing queries of a hybrid event index

Inventors: Abhishek Agrawal (San Francisco, CA); Samir Goel (San Francisco, CA); Franck Chastagnol (Woodside, CA); Adam Faulkner (San Francisco, CA); Jitendra Vaidya (San Jose, CA)
Assignee: Dropbox, Inc.
G06F16/245G06F16/22G06F16/335G06F16/435G06F16/41G06F16/61
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,914,585
App. No.
17/851,854
Granted
Feb 27, 2024
Kind
B2
Abstract

Disclosed are systems and methods of querying a hybrid event index of a user. The systems and methods can include receiving a search request pertaining to at least a first namespace of a plurality of namespaces and determining a first index server storing a first portion of the hybrid event index associated with the first namespace. The systems and methods can further include searching, the first portion of the hybrid event index stored at the first index server, determining one or more attributes from the search request, and determining a payload based on the search results of the first portion of the hybrid event index. Finally, the systems and methods can include applying one or more attributes to the payload and sending the filtered payload.

Claims (56)

1. A method of querying a service, the method comprising:

receiving a query for an event associated with a user account of the service;

determining an index server from a plurality of index servers that store events associated with the service, wherein the index server comprises a plurality of indexes that index event identifiers based on different properties of an event;

searching a first index of the plurality of indexes based on a first property associated with events stored in the index server;

searching a second index of the plurality of indexes based on a second property associated with events stored in the index server;

determining a payload based on search results identified from searching the first index and the second index;

filtering the payload based on parameters identified in the query; and

sending the filtered payload to a device associated with the user account, wherein the filtered payload is configured to allow the user account to receive the events that the user account is authorized to access and are identified in the query.

2. The method of claim 1 , wherein the query identifies at least one namespace accessible by the user account.

3. The method of claim 1 , wherein events are stored in the first index and the second index in reverse time order.

4. The method of claim 1 , wherein the searching of the first index or the second index is completed based on a timestamp associated with an event.

5. The method of claim 1 , wherein the first index comprises a namespace index that relates an event identifier to a namespace, and the second index comprises a user identifier index that relates an event identifier to the user identifier index.

6. The method of claim 5 , wherein determining the payload comprises:

intersecting the search results to remove duplicate event identifiers to yield a list of event identifiers.

7. The method of claim 6 , further comprising:

searching a main index of the first index based on the list of event identifiers to yield the payload.

8. The method of claim 1 , wherein determining the index server from the plurality of index servers comprises:

hashing, by a routing server, a namespace identifier in the query; and

comparing a result of the hashing of the namespace identifier to a mapping index to identify the index server from the plurality of index servers, wherein the mapping index is cached by the routing server.

9. The method of claim 1 , further comprising:

searching a live cache of events that are not indexed; and

combining search results identified from searching the live cache with the payload.

10. A system associated with a service, comprising:

a storage configured to store instructions;

a routing server configured to:

receive a query for an event associated with a user account of the service;

determine an index server from a plurality of index servers that store events associated with the service, wherein the index server comprises a plurality of indexes that index event identifiers based on different properties of an event;

send an instruction to the index server to search for events based on the query;

receive a payload from the index server;

filter the payload based on parameters identified in the query; and

send the filtered payload to a device associated with the user account, wherein the filtered payload is configured to allow the user account to receive the events that the user account is authorized to access and are identified in the query and wherein the index server is configured to:

search a first index of the plurality of indexes based on a first property associated with events stored in the index server;

search a second index of the plurality of indexes based on a second property associated with events stored in the index server; and

determine the payload based on search results identified from searching the first index and the second index.

11. The system of claim 10 , wherein the query identifies at least one namespace accessible by the user account.

12. The system of claim 10 , wherein events are stored in the first index and the second index in reverse time order.

13. The system of claim 10 , wherein the searching of the first index or the second index is completed based on a timestamp associated with an event.

14. The system of claim 10 , wherein the first index comprises a namespace index that relates an event identifier to a namespace, and the second index comprises a user identifier index that relates an event identifier to the user identifier index.

15. The system of claim 14 , wherein the index server is configured to:

intersect the search results to remove duplicate event identifiers to yield a list of event identifiers.

16. The system of claim 15 , wherein the index server is configured to:

search a main index of the first index based on the list of event identifiers to yield the payload.

17. The system of claim 10 , wherein the routing server is configured to:

hash a namespace identifier in the query; and

compare a result of the hashing of the namespace identifier to a mapping index to identify the index server from the plurality of index servers, wherein the mapping index is cached by the routing server.

18. The system of claim 10 , wherein the routing server is further configured to:

search a live cache of events that are not indexed; and

combine search results identified from searching the live cache with the payload.

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

receive a query for an event associated with a user account of a service;

determine an index server from a plurality of index servers that store events associated with the service, wherein the index server comprises a plurality of indexes that index event identifiers based on different properties of an event;

send an instruction to the index server to search for events based on the query, wherein the index server is configured to search a first index of the plurality of indexes based on a first property associated with events stored in the index server, search a second index of the plurality of indexes based on a second property associated with events stored in the index server; and determine a payload based on search results identified from searching the first index and the second index;

receive the payload from the index server;

filter the payload based on parameters identified in the query; and

send the filtered payload to a device associated with the user account, wherein the filtered payload is configured to allow the user account to receive the events that the user account is authorized to access and are identified in the query.

20. The non-transitory computer readable medium of claim 19 , wherein the query identifies at least one namespace accessible by the user account.

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 Jun 28, 2022
From: AGRAWAL, ABHISHEK; GOEL, SAMIR; CHASTAGNOL, FRANCK; FAULKNER, ADAM; VAIDYA, JITENDRA
To: DROPBOX, INC.
Reel/Frame 060340/0245 →
Continuity (3)
Continuation 15171983 · Jun 2, 2016
Continuation In Part 14983775 · Dec 30, 2015
Related Publication 20220327117A1 · Oct 13, 2022