US-12625867-B1 - Determining a result filter for requests to key-value data stores
Abstract
Results for search requests to key-value data stores may be dynamically filtered. A search request may include keys for performing the search request with respect to key value data stores. The number of values for the keys included in the key value data store may be used to determine filtering criteria for the search request. The filtering criteria may be applied as part of generating a result for the search request.
Inventors
- Andrea Giuliano
- Robert Crossan
Assignees
- AMAZON TECHNOLOGIES, INC.
Dates
- Publication Date
- 20260512
- Application Date
- 20210630
Claims (20)
- 1 . A system, comprising: at least one processor; and a memory, storing program instructions that when executed by the at least one processor, cause the at least one processor to: receive a request to generate a search result that match a plurality of keys included in the request, the plurality of keys identifying respective data stored in a plurality of key-value data stores, wherein the plurality of key-value data stores do not support a same set of features for search; determine, using a plurality of different filter recognition techniques to select from a plurality of different filter criteria, one or more filter criteria to apply as part of generating the search result, wherein the request does not explicitly state the one or more filter criteria, and wherein to determine the one or more filter criteria, the program instructions cause the at least one processor to: based on respective name value pairs of individual ones of the plurality of keys included in the request, determine a number of times a key with a same name is included in the request and a number of values specified in the request for the key with the same name; evaluate, using the plurality of different filter recognition techniques, the number of times the key with the same name is included in the request and the number of values specified in the request to identify the one or more filter criteria, wherein the one or more filter criteria correspond to whether the number of values specified in the request for the key with the same name is zero values, one value, or more than one value; and order application of the one or more filter criteria; cause application of the one or more filter criteria as part of causing the search result to be generated; and return the search result in response to the request.
- 2 . The system of claim 1 , wherein to cause the application of the one or more filter criteria as part of causing the search result to be generated, the program instructions cause the at least one processor to apply the filter criteria with respect to individual results respectively received from the plurality of key-value data stores in response to one or more access requests sent to the plurality of key-value data stores.
- 3 . The system of claim 1 , wherein the respective number of values for one of the plurality of keys is one.
- 4 . The system of claim 1 , wherein the at least one processor and the memory are implemented as part of a monitoring service of a provider network, wherein the plurality of key-value data stores describe various attributes of one or more services of the provider network, and wherein the search request is a label search request for one or more resources implemented at the one or more services.
- 5 . A method, comprising: receiving a request to generate a search result from a plurality of keys included in the request by accessing one or more key-value data stores of a plurality of key-value data stores, wherein the plurality of key-value data stores do not support a same set of features for search; based on respective name value pairs of individual ones of the plurality of keys included in the request, determining a number of times a key with a same name is included in the request and a number of values specified in the request for the key with the same name; determining, using a plurality of different filter recognition techniques to select from a plurality of different filter criteria, one or more filter criteria to apply as part of generating the search result, wherein the one or more filter criteria are determined from the number of times the key with the same name is included in the request and the number of values specified in the request, wherein the one or more filter criteria correspond to whether the number of values specified in the request for the key with the same name is zero values, one value, or more than one value in the request, and wherein the request does not explicitly state the one or more filter criteria; applying the one or more filter criteria as part of generating the search result; and returning the search result in response to the request.
- 6 . The method of claim 5 , wherein applying the one or more filter criteria as part of generating the search result comprises sending respective requests to obtain different portions of the result to the one or more key-value data stores, wherein the respective requests include requests to apply the filter criteria at the one or more key-value data.
- 7 . The method of claim 5 , wherein determining, using the plurality of different filter recognition techniques to select from the plurality of different filter criteria, the one or more filter criteria to apply as part of generating the search result from the respective number of values included in the request for the plurality of keys, comprises: ordering application of the one or more filter criteria.
- 8 . The method of claim 5 , wherein the determined one or more filtering criteria comprises a determined number of OR operations.
- 9 . The method of claim 5 , wherein the determined one or more filtering criteria comprises a determined number of AND operations.
- 10 . The method of claim 5 , wherein the number of values of the same key is more than one value.
- 11 . The method of claim 5 , wherein the number of values of the same key is zero.
- 12 . The method of claim 5 , wherein applying the one or more filter criteria as part of generating the search result comprises applying the filter criteria with respect to individual results respectively received from the one or more key-value data in response to one or more access requests sent to the one or more key-value data stores.
- 13 . The method of claim 5 , wherein the one or more key-value data stores are a plurality of key-value data stores, and wherein the search request is performed as part of federated search processing across the plurality of key-value data stores.
- 14 . One or more non-transitory, computer-readable storage media, storing program instructions that when executed on or across one or more computing devices cause the one or more computing devices to implement: receiving a request to generate a search result that match a plurality of keys included in the request by accessing one or more key-value data stores of a plurality of key value data stores, wherein the plurality of key-value data stores do not support a same set of features for search; based on respective name-value pairs of individual ones of the plurality of keys included in the request, determining a number of times a key with a same name is included in the request and a number of values specified in the request for the key with the same name; determining, using a plurality of different filter recognition techniques to select from a plurality of different filter criteria, one or more filter criteria to apply as part of generating the search result, wherein the one or more filter criteria are determined from the number of times the key with the same name is included in the request and the number of values specified in the request, wherein the number of values specified in the request for the key with the same name is zero values, one value, or more than one value in the request, and wherein the request does not explicitly state the one or more filter criteria; causing application of the one or more filter criteria as part of causing the search result to be generated; and returning the search result in response to the request.
- 15 . The one or more non-transitory, computer-readable storage media of claim 14 , wherein, in causing application of the one or more filter criteria as part of generating the search result, the program instructions cause the one or more computing devices to implement applying the filter criteria with respect to individual results respectively received from the one or more key-value data in response to one or more access requests sent to the one or more key-value data stores.
- 16 . The one or more non-transitory, computer-readable storage media of claim 14 , wherein, in determining, using the plurality of different filter recognition techniques to select from the plurality of different filter criteria, the one or more filter criteria to apply as part of generating the search result from the respective number of values included in the request for the plurality of keys, the program instructions cause the one or more computing devices to implement: ordering application of the one or more filter criteria.
- 17 . The one or more non-transitory, computer-readable storage media of claim 14 , wherein the determined one or more filtering criteria comprises a determined number of AND operations.
- 18 . The one or more non-transitory, computer-readable storage media of claim 14 , wherein the number of values of the same key is more than one value.
- 19 . The one or more non-transitory, computer-readable storage media of claim 14 , wherein the number of values of the same key is one.
- 20 . The one or more non-transitory, computer-readable storage media of claim 14 , wherein the one or more key-value data stores are a plurality of key-value data stores, and wherein the search request is performed as part of federated search processing across the plurality of key-value data stores.
Description
BACKGROUND Key-value data stores offer a flexible storage solution for managing different data sets. Data stored in a key-value data store may be accessed utilizing a key value that identifies the data. Identifying data in this way allows for a key-value data store to store data with differing values, fields, characteristics, sizes, or other differences in the same data store. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a series of block diagrams illustrating determining a result filter for requests to key-value data stores, according to some embodiments. FIG. 2 is block diagram illustrating a provider network that implements multiple different network-based services for clients, including a monitoring service, according to some embodiments. FIG. 3 is a block diagram illustrating metadata-based metrics search for a monitoring service that may determine a result filter for request results obtained from separate programmatic interfaces, according to some embodiments. FIG. 4 is a logical block diagram illustrating dynamic filtering, according to some embodiments. FIG. 5 is a logical block diagram illustrating the evaluation of a search request to determine filter criteria, in some embodiments. FIG. 6 is a high-level flowchart illustrating various methods and techniques for determining a result filter for requests to key-value data stores, according to some embodiments. FIG. 7 is a high-level flowchart illustrating various methods and techniques for identifying filter criteria for a search request, according to some embodiments. FIG. 8 is a block diagram illustrating an example computing system, according to some embodiments. While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to. DETAILED DESCRIPTION Various techniques of determining a result filter for requests to key-value data stores are described herein. Key-value data stores may support different interface options, which may, in some circumstances not support all of the various conditions, criteria, or other features upon which a client application may wish to search. Moreover, when processing search requests to key-value data stores across multiple different key-value data stores, the varying levels of supported features may not provide a uniform or predictable experience to client applications, as not all key-value data stores may support the same conditions, criteria, or other features upon which a client application may wish to search. Therefore, techniques that can determine a result filter for requests to key-value data stores may provide a uniform client application experience by supporting a common set of filtering conditions for results returned from across one or multiple key-value data stores, without having to modify the key-value data stores to support the same filtering criteria. FIG. 1 is a logical illustration of determining a result filter for requests to key-value data stores, according to some embodiments. Key-value search processing 120 may be one or more computing resources, devices, or systems, such as computing system 1000 discussed below with regard to FIG. 8, which may support search requests, like search request 110 across one (or more) key-value data stores. Key-value search processing 120 may implement a common interface via which search request 110 may be received so that a client application submitting search request 110 need not conform to the particular features supported by different interfaces of key-value data stores 130. Key-value data store(s) 130 may store data (e.g., different objects, records, documents, etc.) as various sets, tables, or collections, among other groupings, which may be searched by key-value search processing 120. These key-value data stores 130 may organize the different objects, records, or documents by utilizing a key which may identify which one (or ones) of different objects, records, or documents to return. These objects, records, or documents may be stored in a non-relational data format (e.g., a NoSQL data model) which may allow for different objects, records, or documents in the same collection to have diff