A cache is a collection of data which is duplicated from original values stored elsewhere or computed earlier on a computing system. The cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, it can be used in the future by accessing the cached copy rather than re-fetching or re-computing the original data. Conventionally, the original data takes longer to access or to compute, compared to reading the cache.
The cache may improve latencies and reduce the load to the computing system. However, caches are limited to a particular location within the computing system. Therefore, when service executed by the computing system is replicated geographically, cached data may not be available at the other locations. As a result, search query requests will be served by backend search engines at all locations. Therefore, efforts are duplicated across multiple locations for the same search query. In addition, search results for a search query from multiple locations are not consistent.
Embodiments of the invention are defined by the claims below. A high-level overview of various embodiments of the invention is provided to introduce a summary of the systems, methods, and media that are further described in the detailed description section below. This summary is neither intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in isolation to determine the scope of the claimed subject matter.
A synchronization system contains multiple synchronization environments executed by different computing devices in a search system. A synchronization environment is a self-contained environment which is capable of receiving a search query, retrieving results that satisfy the search query, and saving the search query results via a cache manager. In addition, the search query results are broadcast to other synchronization environments within the synchronization system. The multiple synchronization environments can be in the same physical location, or they can be located in different geographical locations.
Embodiments of the invention include a synchronization system with multiple synchronization environments, and a method and media for synchronizing available information within that system. Each synchronization environment has a frontend infrastructure, which is operable to receive a search query input from a user. A local cache manager is included in the synchronization environment in order to store search query results or pointers to the search query results. When the frontend infrastructure receives a search query, it checks the local cache manager to see if results for that search query already exist. When existing results are not found in the local cache manager, then one or more backend search engines are used to search the search query obtained from the frontend infrastructure.
When new results for a search query are obtained from the backend search engines, the results are stored in the local cache manager. In addition, a cache sync notification is created, which provides information indicating where the actual search results are located. A cache synchronization service broadcasts the cache sync notification to all other synchronization environments within the synchronization system. The broadcast cache sync notification is received into the frontend infrastructure of each synchronization environment. Each frontend infrastructure saves the cache sync notification into its local cache manager.
Embodiments of the invention also utilize a system, method, and media for retrieving cached search results from other synchronization environments. A frontend infrastructure checks its local cache manager for existing results of a search query request. The search results may not be located in the local cache manager, but there may be a cache sync notification indicating that the desired search results are located in another synchronization environment. In some embodiments of the invention, a frontend infrastructure of one synchronization environment retrieves search results from a frontend infrastructure of another synchronization environment in response to the search request.
Illustrative embodiments of the invention are described in detail below, with reference to the attached drawing figures, which are incorporated by reference herein, and wherein:
Embodiments of the invention provide systems, methods and computer-readable storage media for the synchronization of information across multiple environments. This detailed description and the following claims satisfy the applicable statutory requirements.
The terms “step,” “block,” etc. might be used herein to connote different acts of methods employed, but the terms should not be interpreted as implying any particular order, unless the order of individual steps, blocks, etc. is explicitly described. Likewise, the term “module,” etc. might be used herein to connote different components of systems employed, but the terms should not be interpreted as implying any particular order, unless the order of individual modules, etc. is explicitly described.
Throughout the description of different embodiments of the invention, several acronyms and shorthand notations are used to aid the understanding of certain concepts pertaining to the associated systems, methods and computer-readable media. These acronyms and shorthand notations are intended to help provide an easy methodology for communicating the ideas expressed herein and are not meant to limit the scope of any embodiment of the invention.
Embodiments of the invention include, without limitation, methods, systems, and sets of computer-executable instructions embodied on one or more computer-readable media. Computer-readable media include both volatile and nonvolatile media, removable and non-removable media, and media readable by a database and various other network devices. Computer-readable media comprise computer storage media and communication media. By way of example, and not limitation, computer-readable media comprise media implemented in any method or technology for storing information. Examples of stored information include computer-useable instructions, data structures, program modules, and other data representations. Media examples include, but are not limited to, information-delivery media, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact-disc read-only memory (CD-ROM), digital versatile discs (DVD), holographic media or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other magnetic storage devices. These examples of media can be configured to store data momentarily, temporarily, or permanently. The computer-readable media include cooperating or interconnected computer-readable media, which exist exclusively on a processing system or distributed among multiple interconnected processing systems that may be local to, or remote from, the processing system. Communication media can be configured to embody computer-readable instructions, data structures, program modules or other data in an electronic data signal.
Embodiments of the invention are directed to computer code or machine-useable instructions, including computer-executable instructions such as program modules, being executed by a computer or other machine. Generally, program modules including routines, programs, objects, components, data structures, and the like refer to code that perform particular tasks or implement particular data types. Embodiments described herein may be implemented using a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, more specialty computing devices, etc. Embodiments described herein may also be implemented in distributed computing environments, using remote-processing devices that are linked through a communications network or the Internet.
In some embodiments, a computer-implemented method of synchronizing available information is provided. When a search query is received by a first frontend infrastructure of a first environment, the first frontend infrastructure checks a first local cache manager to see if results for the search query already exist. If existing search results are not found in the first local cache manager, then the search query is sent to one or more backend search engines of the first environment. When results of the search query are returned from the one or more backend search engines, the search results are saved into a memory of the first local cache manager. A cache sync notification of these search results is sent from the first frontend infrastructure to a first cache synchronization service of the first environment. The cache sync notification of the search results is then broadcast from the first cache synchronization service to a second frontend infrastructure of a second environment. The broadcast cache sync notification of the search results is then saved into a memory of a second local cache manager of the second environment. In another embodiment, one or more computer-readable storage media may contain computer readable instructions embodied thereon that, when executed by a computing device, perform the above method of synchronizing available information.
In certain embodiments, a method for retrieving results from a first local cache manager by a second environment is provided. When a search query is received by a second frontend infrastructure, a second local cache manager is checked to see if the results of the search query already exist. A cache sync notification of the search query results may be found in the second local cache manager. The cache sync notification may indicate that the results are located in a first environment. A request for the search query results is then forwarded to a first frontend infrastructure of the first environment. The first frontend infrastructure retrieves from a first local cache manager the search query results, which are then sent to the second frontend infrastructure. The cache sync notification is removed from the second local cache manager, and the search query results are then saved by the second local cache manager. In another embodiment, one or more computer-readable storage media may contain computer-readable instructions embodied thereon that, when executed by a computing device, perform the above method for retrieving results from a first local cache manager by a second environment.
In yet another embodiment, the present invention is directed to a computer-implemented synchronization system, containing a plurality of cache synchronization environments. Each cache synchronization environment is executed by a computer and includes a frontend infrastructure, one or more backend search engines, a local cache manager, and a cache synchronization service. The frontend infrastructure is operable to receive a search query, and to send and receive cache sync notifications of search query results to and from other synchronization environments. The one or more backend search engines are operable to receive and search the search query obtained from the frontend infrastructure, and to return the results to the frontend infrastructure. The local cache manager is operable to store search query results. The local cache manager is also operable to store cache sync notifications of search query results, wherein the search query results are stored in a different synchronization environment. The cache synchronization service is operable to send and receive cache sync notifications of search query results to and from one or more frontend infrastructures located in other respective synchronization environments.
Having briefly described a general overview of the embodiments herein, an exemplary computing device is described below. Referring initially to
The computing device 100 includes a bus 110 that directly or indirectly couples the following devices: memory 112, one or more processors 114, one or more presentation components 116, input/output (I/O) ports 118, input/output components 120, and an illustrative power supply 122. The bus 110 represents what may be one or more busses (such as an address bus, data bus, or combination thereof). Although the various blocks of
The computing device 100 can include a variety of computer-readable media. By way of example, and not limitation, computer-readable media may comprise RAM, ROM, EEPROM, flash memory or other memory technologies, CDROM, DVD or other optical or holographic media, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or similar tangible media that are configurable to store data and/or instructions relevant to the embodiments described herein.
The memory 112 includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory 112 may be removable, non-removable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, cache, optical-disc drives, etc. The computing device 100 includes one or more processors 114, which are operative to read data from various entities such as the memory 112 or the I/O components 120. The presentation components 116 are operative to present data indications to a user or other device. Exemplary presentation components 116 include display devices, speaker devices, printing devices, vibrating devices, and the like.
The I/O ports 118 are operative to logically couple the computing device 100 to other devices including the I/O components 120, some of which may be built in. Illustrative I/O components 120 include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc.
The components described above in relation to the computing device 100 may also be included in a wireless device. A wireless device, as described herein, refers to any type of wireless phone, handheld device, personal digital assistant (PDA), BlackBerry®, smartphone, digital camera, or other mobile devices (aside from a laptop), which are operable to communicate wirelessly. One skilled in the art will appreciate that wireless devices will also include a processor and computer-storage media, which are operable to perform various functions. Embodiments described herein are applicable to both a computing device and a mobile device. In embodiments, computing devices can also refer to devices which operate to run applications of which images are captured by the camera in a mobile device.
The computing system described above is configured to be used with a cache synchronization system, such as the computer-implemented synchronization system illustrated in
One synchronization environment 211 includes a frontend infrastructure 221. The frontend infrastructure 221 is operable to receive a search query input from a user. A computer can be used to send the search query to the frontend infrastructure 221. A local cache manager 231 is included in the synchronization environment 211 to store search query results. When the frontend infrastructure 221 receives a search query, it checks the local cache manager 231 to see if results for that search query already exist. This function avoids unnecessary duplication of searching. When existing results are not found in the local cache manager 231, then one or more backend search engines 241 are used to retrieve search results in response to the search query obtained from the frontend infrastructure 221. In some synchronization environments 211, thousands of backend search engines 241 are used for searching millions of documents, in order to obtain search query results for the search query input.
When new results for a search query are obtained from the backend search engines 241, the results are stored in the local cache manager 231. In addition, a cache sync notification is created, which provides certain identifier and location information of the search results. The cache sync notification provides a link or pointer to where the actual search results are located. The cache sync notification is sent to a cache synchronization service 251 within the synchronization environment 211.
This newly created cache sync notification is broadcast to all other synchronization environments that are included in the synchronization system 200, such as synchronization environment 212. The broadcast cache sync notification is received by the frontend infrastructure 222 of synchronization environment 212. The frontend infrastructure 222 saves the cache sync notification into the local cache manager 232 of synchronization environment 212. Synchronization environment 212 includes its own backend search engines 242 and a cache synchronization service 252, similar to synchronization environment 211.
A search query is received into a first frontend infrastructure of a first synchronization environment in step 410. A first local cache manager for the first synchronization environment is checked to see if results already exist for that particular search query in step 420. If existing results for that search query are not found in the first local cache manager, then the search query is sent to one or more backend search engines of the first synchronization environment in step 430. The search results from the backend search engines are returned to the first frontend infrastructure. The search results are then saved into a memory of the first local cache manager by the first frontend infrastructure in step 440. A cache sync notification is created, which identifies the contents and location of the actual results of the search query. The cache sync notification of search results is sent from the first frontend infrastructure to a first cache synchronization service of the first synchronization environment in step 450. The cache sync notification of search results is then broadcast from the first cache synchronization service to a second frontend infrastructure of a second synchronization environment in step 460. If there are more than two synchronization environments within the synchronization system, then the cache sync notification of search results is broadcast to each frontend infrastructure of each synchronization environment. The cache sync notification that was broadcast to each frontend infrastructure of each synchronization environment is saved to a memory of the respective local cache manager in step 470.
An alternative embodiment provides for broadcasting multiple search results simultaneously. Search results are stored in the cache synchronization service, then multiple results are broadcast simultaneously. The results could be stored for a certain period of time, as an example one to two seconds, then be broadcast at the end of the holding period.
The flow diagram of the computer-implemented method illustrated in
The above description of the computer-implemented method of
The above described system, method, and storage media embodiments greatly reduce the amount of backend searching across multiple synchronization environments. This is accomplished by broadcasting search query results to all of the other synchronization environments by means of a cache synchronization service. A cache hit ratio is defined as the number of search query results obtained from cache per number of total search requests. Embodiments of the invention provide a cache hit ratio of greater than 60%, which means that less than half of all search query requests had to be searched by backend search engines. In addition to improving efficiency and reducing costs, the embodiments of the invention also provide consistent results across multiple synchronization environments.
The above described system, method, and storage media embodiments can be implemented for purposes of synchronizing search information via an interconnected computing network. The interconnected computing network could be the Internet, a local area network (LAN), or a wide area network (WAN), for example.
The above described system, method, and storage media embodiments can also be implemented for purposes of synchronizing peer to peer files across multiple environments. As an additional embodiment, frequently accessed files could be stored in the local cache manager of each respective synchronization environment.
Many different arrangements of the various components depicted, as well as embodiments not shown, are possible without departing from the spirit and scope of the invention. Embodiments of the invention have been described with the intent to be illustrative rather than restrictive. Alternative embodiments will become apparent to those skilled in the art that do not depart from its scope. A skilled artisan may develop alternative means of implementing the aforementioned improvements without departing from the scope of the embodiments of the invention.
It will be understood that certain features and subcombinations are of utility and may be employed without reference to other features and subcombinations and are contemplated within the scope of the claims. Not all steps listed in the various figures need be carried out in the specific order described.