IP Library Granted Patent US 11,687,533
Granted Patent B2
US 11,687,533 · App. 17/255,328 · Granted Jun 27, 2023

Centralized storage for search servers

Inventor: Ilan Ginzburg (Saint Pancrasse, FR)
Assignee: Salesforce, Inc.
G06F16/2455G06F16/2272G06F16/27
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,687,533
App. No.
17/255,328
Granted
Jun 27, 2023
Kind
B2
Abstract

Techniques are disclosed relating to servicing search requests based on index information stored in a storage shared between multiple search servers. In some embodiments, a first search server maintains a local cache including index information usable to service received search requests and synchronizes the local cache with the shared storage. The synchronizing includes retrieving, from the shared storage, metadata indicative of the index information in the shared storage and determining, based on the metadata, whether the index information in the local cache differs from the shared storage. In response to determining that the index information in the local cache differs from the index information in the shared storage, the first search server updates the index information in the local cache with the index information in the shared storage. The first search server may then provide one or more search results determined using the updated index information.

Claims (75)

1. A method of servicing search requests based on index information stored in a storage shared between a plurality of search servers, comprising:

maintaining, by a first of the plurality of search servers, a local cache including index information usable to service received search requests;

synchronizing, by the first search server, the local cache with the shared storage, wherein the synchronizing includes:

retrieving, from the shared storage, metadata indicative of the index information in the shared storage;

determining, based on the metadata, whether the index information in the local cache differs from the shared storage;

in response to determining that the index information in the local cache differs from the index information in the shared storage, updating the index information in the local cache with the index information in the shared storage; and

updating the index information in the shared storage with at least a portion of the index information in the local cache that is not stored at the shared storage;

receiving, by the first search server, a search request to conduct a search; and

in response to the search request, providing, by the first search server, one or more results determined using the updated index information.

2. The method of claim 1 , wherein the index information in the local cache is distributed among a first set of segment files;

wherein the retrieved metadata identifies a second set of segment files in the shared storage; and

wherein the determining includes comparing the first set of segment files with the second set of segment files to identify segment files in the shared storage that are not included in the local cache.

3. The method of claim 1 , further comprising:

generating, by the first search server, index information in response to a request to index one or more items;

storing, by the first search server, a first instance of the generated index information in the local cache, wherein the first instance of the generated index information is usable by the first search server to service search requests for the one or more items; and

storing, by the first search server, a second instance of the generated index information in the shared storage, wherein the second instance of the generated index information corresponds to the portion and is usable by a second of the plurality of search servers to service search requests for the one or more items.

4. The method of claim 1 , further comprising:

determining, by the first search server, that the index information in the local cache has become corrupted; and

in response to determining that the index information in the local cache has become corrupted, the first search server attempting to replace the index information in the local cache with the index information in the shared storage.

5. The method of claim 4 , further comprising:

determining, by the first search server, that the index information in the shared storage has become corrupted; and

storing, by the first search server and in the shared storage, a notification indicating that the index information in the shared storage has become corrupted, wherein the notification causes a second of the plurality of search servers to replace the index information in the shared storage with index information from a local cache maintained by the second search server.

6. The method of claim 1 , further comprising:

determining, by the first search server, to delete one or more segment files storing index information in the shared storage;

storing, by the first search server and in the shared storage, an indication that the one or more segment files are to be deleted; and

deleting, by a second of the plurality of search servers, the one or more segment files in response to determining that a threshold amount of time has passed since the storing of the indication.

7. The method of claim 1 , further comprising:

instantiating a container including the first search server; and

executing the first search server within the container.

8. The method of claim 7 , further comprising:

determining a load being experienced by the plurality of search servers; and

instantiating another container including another search server executable to retrieve index information from the shared storage and service search requests.

9. A non-transitory computer readable medium having program instructions stored thereon that are capable of causing a first of a plurality of search servers to implement operations for distributing index information to a storage shared between the plurality of search servers, the operations comprising:

receiving a request to index one or more items such that the one or more items are identifiable as search results in response to a performed search;

in response to the request, generating index information based on the one or more items;

adding a first instance of the generated index information to index information stored in a local cache accessible to the first search server;

synchronizing the local cache with the shared storage, wherein the synchronizing includes:

adding a second instance of the generated index information to index information stored in the shared storage such that the generated index information is accessible to the plurality of search servers; and

updating the index information in the local cache with at least a portion of the index information in the shared storage that is not stored at the local cache; and

performing a search that includes identifying one of the one or more items as a search result determined based on the first instance of generated index information stored in the local cache.

10. The computer readable medium of claim 9 , wherein adding the second instance includes:

storing, in the shared storage, sequence metadata identifying an ordering in which the second instance of generated index information is stored relative to other index information stored in the shared storage, wherein the identified ordering is usable by ones of the plurality of search servers to determine whether to retrieve the second instance of generated index information.

11. The computer readable medium of claim 9 , wherein adding the second instance of generated index information includes:

storing, in the shared storage, a segment file including the second instance of generated index information, wherein the storing includes assigning, to the segment file, a file name that includes a randomly generated value.

12. The computer readable medium of claim 9 , wherein adding the second instance of generated index information includes:

storing, in the shared storage, a segment file including the second instance of generated index information; and

storing, in the shared storage, a checksum usable to verify the segment file.

13. The computer readable medium of claim 9 , wherein the synchronizing of the local cache with the shared storage includes:

retrieving, from the shared storage, sequence information identifying an ordering in which index information is stored to the shared storage;

determining, based on the ordering, whether the index information in the local cache differs from the shared storage; and

in response to the determining, updating the index information in the local cache with the portion of the index information in the shared storage.

14. The computer readable medium of claim 9 , wherein the operations further comprise:

determining that the shared storage includes a notification from another one of the plurality of search servers indicating that index information in the shared storage has become corrupted; and

in response to the notification, storing index information from the local cache in the shared storage.

15. The computer readable medium of claim 9 , wherein the operations further comprise:

determining that the shared storage includes a notification from another one of the plurality of search servers indicating that a segment file in the shared storage is to be deleted;

in response to the notification, determining an amount of time since the notification was stored in the shared storage; and

deleting the segment file in response to the amount of time satisfying a threshold.

16. A non-transitory computer readable medium having program instructions stored thereon that are capable of causing a search server to implement operations for servicing search requests based on index information stored in a storage shared between a plurality of search servers, the operations comprising:

storing, in a local cache, index information for servicing received search requests;

synchronizing index information in the local cache with the index information in the shared storage, wherein the synchronizing includes:

retrieving, from the shared storage, metadata indicative of the index information in the shared storage;

identifying, based on the metadata, index information in the shared storage that differs from the index information in the local cache; and

updating the index information in the local cache with the identified index information in the shared storage; and

updating the index information in the shared storage with at least a portion of the index information in the local cache that is not stored at the shared storage; and

in response to a search request, providing one or more results determined using the updated index information.

17. The computer readable medium of claim 16 , wherein the metadata specifies a sequence number of a most recently stored segment file in the shared storage, wherein the segment file includes index information; and

wherein the identifying includes comparing the sequence number with a sequence number of a most recently stored segment file in the local cache.

18. The computer readable medium of claim 16 , wherein the operations further comprise:

indexing one or more items to produce index information usable to identify the one or more items in a search;

storing the produced index information in the local cache to facilitate subsequent searches by the search server; and

storing the produced index information in the shared storage to facilitate subsequent searches by others of the plurality of search servers.

19. The computer readable medium of claim 16 , wherein the operations further comprise:

determining that index information in the shared storage is become corrupted; and

in response to the determining, setting a corruption flag that causes another of the plurality of search servers to replace index information in the shared storage with index information from a local cache of the other search server.

Assignments (2)
CHANGE OF NAME Recorded May 1, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 063501/0821 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2020
From: GINZBURG, ILAN
To: SALESFORCE.COM, INC.
Reel/Frame 054732/0448 →
Continuity (1)
Related Publication 20210263919A1 · Aug 26, 2021