Binding JavaScript Object Notation (JASON) queries across cloud resources

JP7652493B2Active Publication Date: 2025-03-27PALO ALTO NETWORKS INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023543445
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-01-20
Filing Date
2022-01-20
Publication Date
2025-03-27
Estimated Expiration
2042-01-20

Smart Images

  • Figure 0007652493000009
    Figure 0007652493000009
  • Figure 0007652493000010
    Figure 0007652493000010
  • Figure 0007652493000011
    Figure 0007652493000011
Patent Text Reader

Abstract

A cloud resource join query for join operations across cloud resources is parsed to extract join rules and queries for each cloud resource in the cloud resource join query. Results from the individual cloud queries are dynamically indexed based on pairs of cloud resources indicated in the join rules. A search engine applies first-order predicates in the join rules using the dynamic index to generate pair-wise join results corresponding to the query. Results of the cloud resource join query include the merged pair-wise join results.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This disclosure relates generally to data processing and database and file access. [Background technology]

[0002] "Inner joins" (hereafter "joins") are operations in relational algebra used to merge results across indexes in a relational database based on common values ​​for particular columns or objects. Results are joined based on having identical values ​​for each column value or particular entry of an object in the relational database as specified by a join query against the database. Joins can be combined across more than two indexes by merging the join results from each pairwise join operation using the "and" logical operator. [Brief description of the drawings]

[0003] Embodiments of the present disclosure may be better understood with reference to the accompanying drawings. [Figure 1] FIG. 1 is a schematic diagram of an example system for binding JSON query rules across cloud resources. [Diagram 2] FIG. 2 is a schematic diagram of an example system for analyzing cloud resource queries using cloud resource optimized combined filters. [Diagram 3] FIG. 3 is a graph of computation time versus cross product size for legacy join and optimized join for a cloud resource join query. [Figure 4]FIG. 4 is a flow diagram of one exemplary operation for evaluating a cloud resource binding query. [Diagram 5] FIG. 5 is a flowchart of one example operation for evaluating results of a cloud resource JSON query according to first-order predicates to generate a pair-wise join set. [Figure 6] FIG. 6 illustrates an exemplary computer system using a cloud resource binding query parser. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0004] The following description includes exemplary systems, methods, techniques, and program flows embodying embodiments of the present disclosure. However, it is understood that the present disclosure may be practiced without these specific details. For example, the present disclosure refers to combining results of JavaScript Object Notation (JSON) queries across cloud resources in an exemplary example. Aspects of the present disclosure may instead be applied to combining results of queries for other file formats across cloud resources. In other examples, well-known instruction instances, protocols, structures, and techniques have not been shown in detail so as not to obscure the description.

[0005] overview

[0006] The optimized join for cloud resources disclosed herein evaluates cloud resource join queries by dynamic indexing of query results from each cloud resource and evaluating and merging pairwise joins against the dynamic index for the query results. A join query parser parses the cloud resource join query to separate join rules corresponding to first-order predicates for pairs of cloud resources from JavaScript Object Notation ("JSON") rules into JSON files on individual cloud resources. An information retrieval system parses the JSON rules to generate queries to a database of fingerprints corresponding to the cloud resources and retrieves corresponding cloud resource fingerprint results. The optimized join filter includes a dynamic indexer that generates an index corresponding to each first-order predicate for each pair of cloud resources, and a search engine uses the index to find pairwise cloud resource join results for each first-order predicate. The optimized join filter merges the pairwise cloud resource join results by identifying results that include fingerprints from each cloud resource that simultaneously satisfy each first-order predicate to generate cloud resource join query results.

[0007] Illustrative Description

[0008] 1 is a schematic diagram of an exemplary system for combining JSON query rules across cloud resources. A computing device 101 communicates a cloud resource combined query 100 to a combined query parser 103. The combined query parser 103 parses the cloud resource combined query 100 and splits it into combined rules 140 and JSON query rules 142 that query individual cloud resources. A cloud resource information retrieval system 105 receives the JSON query rules 142 and generates a cloud database query 106 to one or more cloud resources that the cloud resource information retrieval system 105 communicates to a cloud fingerprint database 107. The cloud fingerprint database 107 returns cloud resource query results including a cloud resource X query result 110 and a cloud resource Y query result 108. The cloud resource information retrieval system 105 communicates the cloud resource X query result 110 and the cloud resource Y query result 108 to a combined filter 109. The combine filter 109 additionally receives combine rules 140 and applies the combine rules 140 to the cloud resource X query results 110 and the cloud resource Y query results 108 to generate combined query results 112 for the combine filter 109 to communicate to the computing device 101.

[0009] One exemplary cloud resource binding query 120 includes the following syntax:

number

[0010] The combined query parser 103 parses the cloud resource binding query 100 into a formatted combined query 102 that includes the combined rules 140 and the JSON query rules 142. The combined query parser 103 can extract the JSON rules in the "filter..." segment of the cloud resource binding query 100 and insert them into the respective JSON rule segments of the cloud resource binding query 100. For example, one exemplary combined rule 122 after extraction of the JSON rules includes the following:

number

number

[0011] The cloud resource information retrieval system 105 receives the JSON query rules 142 and uses them to generate cloud database queries 106. The cloud resource information retrieval system 105 can include a JSON query parser that generates queries for cloud resources based on logical rules in the JSON query rules 142. The JSON query parser 103 can be a compiler-complier generated parser that can handle first-order logical rules defined by a context-free grammar. The cloud resource information retrieval system 105 can use the generated logical rules to identify a set of one or more cloud resources associated with the logical rules. For example, the cloud resource information retrieval system 105 can use profiles and / or fingerprints maintained for each cloud resource to detect key / value pairs, fingerprints, and / or other metadata present in the logical rules that identify the cloud resource. In the given example, the cloud resource information retrieval system 105 can identify cloud resources "cloudA" and "cloudB" based on the API names shown in the example JSON query rules 142. The cloud resource information retrieval system 105 then uses the generated logic rules to generate queries for the identified cloud resources using the query formats for the identified cloud resources in the cloud fingerprint database 107. The cloud resource information retrieval system 105 then communicates a cloud database query 106 including the generated query to the cloud fingerprint database 107 and returns cloud resource X query results 110 and cloud resource Y query results 108 to the cloud resource information retrieval system 105.

[0012] The cloud fingerprint database 107 may include fingerprints of objects in JSON files stored in known cloud resources. The fingerprints may include identifiers for frequently queried objects for each respective cloud resource. The cloud fingerprint database 107 may maintain a profile for each cloud resource upon receiving queries. The profile may indicate the frequency of queried objects and / or other characteristics, statistics, identifiers, etc. for each object. JSON objects that are infrequently queried over a period of time (e.g., after being checked on a scheduled basis) may be removed from the cloud fingerprint database 107. In some embodiments, when the cloud fingerprint database 107 receives a cloud database query 106, some of the query results may return a null value. However, the cloud resource query results 108 and 110 may include objects that contain key / value pairs in the query that returned a null value. Storing cloud resources as fingerprints reduces storage costs while maintaining participation capabilities for cloud queries.

[0013] The combine filter 109 receives the combine rules 140, the cloud resource X query results 110, and the cloud resource Y query results 108. The combine filter 109 uses a dynamic indexer, a search engine, and a combine result merger to generate the combined query results that are communicated to the computing device 101. Operations for combining cloud resource query results using the combine rules are described in more detail in FIG. 2. The computing device 101 can include a user interface that allows a user to generate cloud resource combine queries and adjust parameters of an algorithm for combining the cloud resource queries.

[0014] 2 is a schematic diagram of an exemplary system for analyzing cloud resource queries using a cloud resource optimization combined filter. A cloud resource fingerprint generator 201 receives cloud resource query results 200, which it uses to generate updated fingerprints 202. The cloud resource fingerprint generator 201 communicates the generated fingerprints 202 to a cloud fingerprint database 203 for subsequent storage. In a separate but parallel pipeline, a computing device 231 communicates a cloud resource combined query 240 to a cloud resource information retrieval system 205. The cloud resource information retrieval system 205 extracts a cloud resource query 206 from the cloud resource combined query 240, and the cloud fingerprint database 203 receives the cloud resource query 206. The cloud fingerprint database 203 returns cloud resource fingerprint results 204. The cloud resource information retrieval system 205 communicates the cloud resource fingerprint results 204 and the cloud resource binding rules 208 extracted from the cloud resource binding query 240 to a cloud resource optimization binding filter 241 including a dynamic indexer 207. The dynamic indexer 207 generates indexed cloud resource fingerprints 210 that are received by a search engine 209. The search engine 209 generates a pairwise cloud resource binding set 212 from the indexed cloud resource fingerprints 210. The pairwise binding merger 211 receives the pairwise cloud resource binding set 212 and generates N-wise cloud resource binding results 214 that are received by the computing device 231.

[0015] Cloud resource fingerprint generator 201 can parse cloud resource query results 200 to identify cloud resources and JSON objects that correspond to cloud resource query results 200. Cloud resource fingerprint generator 201 can query cloud fingerprint database 203 for existing cloud fingerprints that correspond to cloud resource query results 200, and can update these fingerprints accordingly. For example, an exemplary updated fingerprint 220 includes the following fields:

number

[0016] The cloud resource binding query 240 includes a combination of JSON rules and join rules, where the JSON rules include rules for querying JSON objects on cloud resources, and the join rules include rules for combining JSON object results across cloud resources. The cloud resource information retrieval system 205 can include a cloud resource binding query parser that can extract the JSON rules and join rules from the cloud resource binding query 240 and can further extract the cloud resource query 206 using the JSON rules and JSON query parser generated by a compiler-compiler using a context-free grammar. The cloud resource query 206 can include a list of cloud resources and corresponding paths in each cloud resource for retrieving fingerprints. The cloud resource information retrieval system 205 communicates the cloud resource fingerprint results 204 returned by the cloud fingerprint database 203 and the cloud resource binding rules 208 generated from the cloud resource binding query 240 to the dynamic indexer 207.

[0017] Cloud resource binding rules 208 include first-order predicates that define binding rules between fingerprints retrieved for pairs of cloud resources. A full binding rule represented by cloud resource binding rules 208 includes the intersection of each pair-wise binding rule represented by the first-order predicates. Dynamic indexer 207 generates an index for each first-order predicate, search engine 209 evaluates each first-order predicate for the corresponding fingerprints in cloud resource fingerprint results 204, and pair-wise join merger 211 performs intersection and de-duplication within pair-wise cloud resource binding sets 212. Exemplary first-order predicates in cloud resource binding rules 208 include:

number

[0018] The dynamic indexer 207 generates an index for each first-order predicate between pairs of cloud resources in the cloud resource fingerprint results 204. The dynamic indexer 207 can use any indexing schema that leads to efficient lookup of the file format. For example, the dynamic indexer 207 can represent an inverted index or use B+trees to generate each index. The type of index can depend on the statistics of the cloud resource fingerprint results 204, such as the number of distinct fingerprints for each cloud resource, frequency similarity or other statistics for JSON object queries corresponding to the fingerprints, etc. B+trees can be implemented for cloud resources that have more distinct fingerprints in the cloud resource fingerprint results 204, while balanced trees can be used for cloud resources that have less distinct fingerprints. The indexes can be generated based on the first-order predicates of the corresponding cloud resources. For example, an index may be generated based on object paths X.path1 and Y.path2 if the first-order predicate specifies equality between X.path1 and Y.path2 for cloud resources X and Y, respectively. The index may be dynamically updated and maintained as queries in cloud resource queries 206 are processed by cloud fingerprint database 203, and the index may be maintained in parallel with other operations shown in FIG.

[0019] Search engine 209 receives indexed cloud resource fingerprints 210 generated by dynamic indexer 207 and uses the generated index to apply pairwise join rules corresponding to the first-order predicates in cloud resource join rules 208. For example, search engine 209 can search for fingerprints in indexed cloud resource fingerprints 210 if the first-order predicate specifies that X.path1 in cloud resource X is equal to Y.path2 in cloud resource Y, where a fingerprint along X.path1 in cloud resource X matches a fingerprint along Y.path2 in cloud resource Y (an index may be built for just such a lookup operation). Search engine 209 communicates pairwise cloud resource join sets 212 to pairwise join merger 211 that include pairs of JSON objects that satisfy the pairwise join rules expressed as first-order predicates.

[0020] The pairwise join merger 211 merges the pairwise cloud resource binding sets 212 to generate the N-wise cloud resource binding results 214. The pairwise join merger 211 searches for tuples of fingerprints in each database represented in the cloud resource binding rules 208 such that a pair of fingerprints in the tuple satisfies each corresponding first-order predicate (i.e., a pair of fingerprints exists in a tuple for each pairwise cloud resource binding set 212). The pairwise join merger 211 can fix a pair of fingerprints in one of the pairwise cloud resource binding sets 212 and scan a second resource binding set in the pairwise cloud resource binding set 212 for another pair of fingerprints such that the resulting three fingerprints simultaneously satisfy all the binding rules for each cloud resource. After merging, the cloud resource optimization join filter 241 can query the cloud resources for objects stored in the cloud resources corresponding to the fingerprints in the N-wise cloud resource binding results 214. The pairwise join merger 211 communicates the resulting N-wise cloud resource join results 214 (where N is the number of cloud resources present in the resulting joined set) to the computing device 213 as a return to the cloud resource join query 240. The pairwise join merger 211 may additionally or alternatively communicate to the computing device 213 query results corresponding to queries on cloud resources for objects represented in the N-wise cloud resource join results 214.

[0021] FIG. 3 is a graph of computation time versus cross product size for legacy join and optimized join for a cloud resource join query. The cross product size represents the product of the number of item / value pairs in the JSON files across each cloud resource in the cloud resource join query. For example, the cross product size of a cloud resource join query across cloud resources X, Y, and Z with respective sizes of 20, 100, and 50 is 20×100×50=100000. The cross product represents the search space using the legacy join. As seen in graph 300, the optimized join presented herein, which uses dynamic indexing after first applying JSON rules to the cloud resources, outperforms the legacy join after a cross product size of 25000. Conversely, legacy joins that perform a brute force search over the entire cross product space without first applying JSON rules have less overhead due to dynamic indexing, and therefore outperform dynamic indexing-based joins at lower cross product sizes, but suffer as the cross product size increases. The threshold cross product size of 25,000 is arbitrary and depends on the implementation of legacy and optimized joins, the type of file formats in the cloud resource join query, etc., and should be determined based on the empirical performance of each join.

[0022] Exemplary operations are described with reference to a join query parser, an information retrieval system, and an optimizing join filter for consistency with previous figures. The names chosen for the program code are not limiting on the scope of the claims. The structure and organization of the program may vary depending on the platform, programmer / designer preferences, programming language, etc. Additionally, names of code units (programs, modules, methods, functions, etc.) may vary for the same reasons and may be arbitrary.

[0023] 4 is a flow chart of one example operation for evaluating a cloud resource join query. At block 401, the join query parser separates JSON rules from join rules in the cloud resource join query. The join rules include first-order predicates for objects in pairs of cloud resources. The JSON rules include rules for querying cloud resources that include JSON files. Although described as JSON rules, these could be rules for any file format that resides on the cloud resource.

[0024] In block 402, the optimized join filter determines whether the cross product size for the join rule exceeds an optimized threshold cross product size. The cross product size is the product of the number of item-value pairs in the files on each cloud resource multiplied across the cloud resources. This corresponds to the order of magnitude of the search space of the brute force join algorithm. The optimized threshold is selected to be the cross product size at which the optimized join filtering algorithm shown in blocks 403, 405, 407, 409, 411, 413, and 415 outperforms the legacy (i.e., brute force) join filtering algorithm. This optimized threshold can be determined empirically and can depend on the implementation of each algorithm and the cloud resource being queried. For example, the optimized threshold can be determined by running the optimized join and the legacy join for the same cloud resource join query with various cross product sizes and across the various cloud resources. The optimized threshold is therefore the cross product size at which the optimized join outperforms the legacy join in average computation time across the cloud resource join queries for that cross product size. If the cross product size is greater than the optimization threshold, the operation proceeds to block 403. Otherwise, the operation skips to block 417.

[0025] In block 403, the information retrieval system begins iterating through the separated JSON rules in the cloud resource binding query. Operations in each iteration are shown in blocks 405 and 407.

[0026] In block 405, the information retrieval system evaluates the current JSON rule using a JSON query parser with a context-free first grammar having first-order logic to generate a cloud resource fingerprint query. The JSON query parser may be generated by a compiler-compiler that uses the context-free grammar as input. The information retrieval system may convert the resulting JSON query from the JSON query parser into a format specific to the cloud fingerprint database (e.g., based on an indexing schema of the cloud fingerprint database).

[0027] In block 407, the information retrieval system queries the cloud fingerprint database to retrieve cloud resource fingerprint results corresponding to the current JSON query. The query indicates characteristics of the objects indicated in the JSON query, such as paths corresponding to the objects in the JSON query. The query may be formatted based on the type of indexing used in the cloud fingerprint database. The cloud fingerprint database may be indexed (e.g., by using JSON file paths for the cloud fingerprints) to enable efficient retrieval of cloud resource fingerprint results based on the query.

[0028] In block 409, the information retrieval system determines whether there are additional JSON rules in the cloud resource query. If there are additional JSON rules, the operation returns to block 403. Otherwise, the operation proceeds to block 411.

[0029] At block 411, the optimizing join filter parses join rules from the cloud resource join query to generate first-order predicates for pairs of cloud resources. By way of example, the join rules may be of the form:

number

number

[0030] In block 413, the optimized join filter evaluates the results of the cloud resource JSON queries according to the primary predicates to generate pairwise join sets. The operations in block 413 are described in more detail in FIG.

[0031] In block 415, the optimized join filter merges the pairwise join sets. The optimized join filter determines tuples of fingerprints in the cloud resource fingerprint results such that each pair of fingerprints in a tuple that corresponds to a pair of cloud resources in the pairwise join set is present in that pair set. Standard search techniques for merging join sets (e.g., merging Structured Language Query (SQL) inner join operations) can be implemented.

[0032] If it is determined that the cross product size of the join rules does not exceed the optimization threshold cross product size, then in block 417 the optimization join filter applies a legacy join to the cloud resource join query. The legacy join may be a brute force search of the cross products of the cloud resources present in the cloud resource join query against the join rules therein. Previously natively implemented join operations may also be used.

[0033] 5 is a flow chart of one example operation for evaluating cloud resource JSON query results according to first-order predicates to generate pairwise join sets. At block 503, an optimizing join filter begins iterating through the first-order predicates to be applied to the cloud resources. Operations at each iteration occur at blocks 505 and 507.

[0034] In block 505, the optimized combine filter generates a dynamic index for the pair of cloud resources corresponding to the current first-order predicate. The dynamic index may be generated based on the current first-order predicate (e.g., by the file paths indicated in the current first-order predicate). To illustrate, the dynamic index may be an inverted index that includes a mapping between key / value pairs and corresponding document identifiers in the cloud resources. For two cloud resources X and Y with paths X.vpcId and Y.resourceId, respectively, X.vpcId takes on values ​​in the set {a,b}. The dynamic index on X may map a and b to a set of document identifiers as follows:

number

[0035] In block 507, the optimized join filter uses the dynamic index to search the cloud resource fingerprint results for the corresponding cloud resource to generate pairwise cloud resource join results. The optimized join filter can analyze the current primary predicate to identify fingerprints in each result of the JSON query for the corresponding cloud resource and determine pairs of fingerprints that satisfy the primary predicate to add to the pairwise join results for the current primary predicate. In the above example, the calculation of the join filter "$X.vpcId equals $Y.resourceId" includes searching Y for document identifiers in the list {1, 20, 111, ...} and determining whether the corresponding JSON file path in Y is such that "Y.resourceID = "a"". The calculation of the join filter additionally includes searching Y for document identifiers in the list {15, 18, 19} and determining whether the corresponding JSON file path in Y is such that "Y.resourceId = 'b'". The results from the join filter are the respective file paths in X and Y for JSON file paths that have a matching key / value pair in the set {a,b}.

[0036] In block 509, the optimized combine filter determines whether there are additional JSON rules in the cloud resource query. If there are additional JSON rules, the operations return to block 503. Otherwise, the operations in FIG. 5 are complete.

[0037] The flowchart is provided to aid in understanding of the examples and is not used to limit the scope of the claims. The flowchart illustrates example operations that may vary within the scope of the claims. Additional operations may be performed, fewer operations may be performed, operations may be performed in parallel, and operations may be performed in a different order. For example, the operations illustrated in blocks 403, 405, 407, and 409 may be performed in parallel or simultaneously. With respect to FIG. 4, it is not necessary to apply a legacy join operation to the cloud resource join query instead. It will be understood that each block of the flowchart diagrams and / or block diagrams, and combinations of blocks in the flowchart diagrams and / or block diagrams, may be implemented by program code. The program code may be provided to a processor of a general purpose computer, a special purpose computer, or other programmable machine or device.

[0038] As will be appreciated, aspects of the disclosure may be embodied as a system, method, or program code / instructions stored on one or more machine-readable media. Thus, aspects may take the form of hardware, software (including firmware, resident software, microcode, etc.), or a combination of software and hardware aspects, all of which may be generally referred to herein as a "circuit," "module," or "system." The functionality presented as individual modules / units in the exemplary diagrams may be organized differently according to any one of the following: platform (operating system and / or hardware), application ecosystem, interface, programmer preferences, programming language, administrator preferences, etc.

[0039] Any combination of one or more machine-readable media may be utilized. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. The machine-readable storage medium may be, for example, but not limited to, a system, apparatus, or device employing any one or combination of electronic, magnetic, optical, electromagnetic, infrared, or semiconductor technologies to store program code. More specific examples (non-exhaustive list) of machine-readable storage media include: portable computer diskettes, hard disks, random access memories (RAM), read-only memories (ROM), erasable programmable read-only memories (EPROM or flash memory), portable compact disk read-only memories (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination of the above. In the context of this specification, a machine-readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine-readable storage medium is not a machine-readable signal medium.

[0040] A machine-readable signal medium may include a propagated data signal in which machine-readable program code is embodied, for example in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including but not limited to electromagnetic, optical, or any suitable combination thereof. A machine-readable signal medium is not a machine-readable storage medium and may be any machine-readable medium that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.

[0041] The program code embodied on the machine-readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic cable, RF, etc., or any suitable combination of the above.

[0042] Program code / instructions may also be stored on a machine-readable medium that can instruct a machine to function in a particular manner to produce a product including instructions that implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams, where the instructions stored on the machine-readable medium.

[0043] FIG. 6 illustrates an exemplary computer system using a cloud resource binding query parser. The computer system includes a processor 601 (possibly including multiple processors, multiple cores, multiple nodes, and / or implementing multi-threading, etc.). The computer system includes a memory 607. The memory 607 may be any one or more of the possible embodiments already described above of a system memory or a machine-readable medium. The computer system also includes a bus 603 and a network interface 605. The system also includes a cloud resource binding query parser 611. The cloud resource binding query parser 611 may parse the cloud resource binding query to separate binding rules and JSON rules, parse the JSON rules to generate queries to a cloud fingerprint database, retrieve corresponding query results from the cloud fingerprint database, and use dynamic indexing / searching to bind the query results from the cloud fingerprint database. Any one of the previously described functions may be implemented partially (or entirely) in hardware and / or on the processor 601. For example, the functions may be implemented using application specific integrated circuits, in logic implemented in the processor 601, in a co-processor in a peripheral device or card, etc. Additionally, an implementation may include fewer or additional components not shown in Figure 6 (e.g., a video card, an audio card, additional network interfaces, peripheral devices, etc.). The processor 601 and the network interface 605 are coupled to a bus 603. Although shown as coupled to the bus 603, memory 607 may be coupled to the processor 601.

[0044] Although aspects of the present disclosure are described with respect to various implementations and applications, it will be understood that these aspects are exemplary and that the claims are not limited thereto. In general, the techniques for parsing cloud resource queries to separate join rules and JSON rules, and then applying JSON rules to cloud resources prior to join rules to optimize join operations as described herein, may be implemented using any hardware system or equipment consistent with multiple hardware systems. Many variations, modifications, additions, and improvements are possible.

[0045] Multiple instances may be provided for components, operations, or structures that are described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and certain operations have been specifically illustrated in the context of exemplary configurations. Other allocations of functionality are contemplated and may fall within the scope of the present disclosure. In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may be included within the scope of the present disclosure.

[0046] Terminology

[0047] This specification uses shorthand for cloud technology for efficiency and ease of description. When referring to "cloud resources," this specification is referring to cloud service provider resources. For example, cloud resources can encompass cloud service provider servers, virtual machines, and storage devices. More generally, cloud service provider resources accessible to customers are resources owned / managed by a cloud service provider entity that are accessible via a network connection. Often, access is pursuant to an application programming interface or software development kit provided by the cloud service provider.

[0048] A "fingerprint" as used herein refers to a representation of one or more key / value pairs stored on a cloud resource. A fingerprint can be, for example, an object in a JSON file stored on a cloud resource. The scope of a fingerprint varies in size / scope as well as choice of representation. Fingerprints are used as proxies for more efficient storage than individual key / value pairs on a cloud resource, and allow for more efficient join operations over a smaller search space.

[0049] Use of the phrase "at least one of" preceding a list with the conjunction "and" should not be treated as an exclusive list and should not be construed as a list of categories with one item from each category, unless otherwise specified. A clause reciting "at least one of A, B, and C" can be infringed by only one of the listed items, by more than one of the listed items, and by one or more of the items in the list and one or more of another unlisted item.

[0050] Exemplary embodiments

[0051] Exemplary embodiments include the following:

[0052] Embodiment 1: A method comprising: parsing a cloud resource join query, extracting a first plurality of join rules and a first plurality of cloud resource queries, the first plurality of join rules including a first plurality of first-order predicates for pairs of cloud resources in the first plurality of cloud resources; querying a database of cloud fingerprints for a first plurality of fingerprints for the first plurality of cloud resources associated with the first plurality of cloud resource queries; combining fingerprints in the first plurality of fingerprints according to the first plurality of first-order predicates in the first plurality of join rules, generating a first plurality of pair-wise join results; and merging the first plurality of pair-wise join results.

[0053] Embodiment 2: The method of embodiment 1, wherein the step of combining fingerprints in the first plurality of fingerprints according to the first plurality of primary predicates includes the steps of generating a first plurality of dynamic indexes for each pair of cloud resources corresponding to the first plurality of primary predicates, and using the plurality of dynamic indexes to search each pair of cloud resources corresponding to the first plurality of primary predicates for results that satisfy at least one of the first plurality of primary predicates.

[0054]

[0023] Embodiment 3: The method of embodiment 1, wherein the first plurality of fingerprints includes characteristics of queries to one or more objects stored in the first plurality of cloud resources.

[0055]

[0023] Embodiment 4: The method of embodiment 3, wherein the characteristics of queries for one or more objects stored in the first plurality of cloud resources include a frequency of querying the one or more objects.

[0056]

[0023] Embodiment 5: The method of embodiment 3, further comprising updating the first plurality of fingerprints based on recent queries to the first plurality of cloud resources.

[0057]

[0021] Embodiment 6: The method of embodiment 1, further comprising: querying the first plurality of cloud resources for objects indicated in the merged first plurality of pairwise join results.

[0058] Embodiment 7: The method of embodiment 6, further comprising communicating at least one of the merged first plurality of pairwise join results and query results to the first plurality of cloud resources to a computing device communicatively coupled to a user interface.

[0059]

[0021] Embodiment 8: The method of embodiment 1, wherein the step of analyzing the cloud resource binding query is based, at least in part, on a determination that a cross product size of the cloud resource binding query exceeds a threshold cross product size.

[0060] Embodiment 9: One or more non-transitory machine-readable media including program code, the program code comprising: parsing a cloud resource combination query to extract a first plurality of combination rules and a first plurality of cloud resource queries, where the first plurality of combination rules include a first plurality of first-order predicates for pairs of cloud resources in the first plurality of cloud resources; querying a database of cloud fingerprints for a first plurality of fingerprints for the first plurality of cloud resources associated with the first plurality of cloud resource queries; combining fingerprints in the first plurality of fingerprints according to the first plurality of first-order predicates in the first plurality of combination rules to generate a first plurality of pair-wise combination results; and merging the first plurality of pair-wise combination results.

[0061] Embodiment 10: The non-transitory machine-readable medium of embodiment 9, wherein the program code combines fingerprints in the first plurality of fingerprints according to the first plurality of primary predicates to generate a first plurality of dynamic indexes for each pair of cloud resources corresponding to the first plurality of primary predicates, and uses the plurality of dynamic indexes to search each pair of cloud resources corresponding to the first plurality of primary predicates for results that satisfy at least one of the first plurality of primary predicates.

[0062] Embodiment 11: The non-transitory machine-readable medium of embodiment 10, wherein the first plurality of fingerprints includes characteristics of queries to one or more objects stored in the first plurality of cloud resources.

[0063]

[0023] Embodiment 12: The non-transitory machine-readable medium of embodiment 11, wherein the characteristics of queries for one or more objects stored in the first plurality of cloud resources include a frequency of querying the one or more objects.

[0064]

[0023] Embodiment 13: The non-transitory machine-readable medium of embodiment 11, further comprising program code for updating the first plurality of fingerprints based on recent queries to the first plurality of cloud resources.

[0065] Embodiment 14: The non-transitory machine-readable medium of embodiment 9, further comprising program code for querying the first plurality of cloud resources for objects indicated in the merged first plurality of pair-wise join results.

[0066] Embodiment 15: The non-transitory machine-readable medium of embodiment 14, further comprising program code for communicating at least one of the merged first plurality of pairwise join results and query results to the first plurality of cloud resources to a computing device communicatively coupled to a user interface.

[0067] Embodiment 16: A non-transitory machine-readable medium as described in embodiment 9, wherein the program code for analyzing the cloud resource binding query is based, at least in part, on a determination that a cross product size of the cloud resource binding query exceeds a threshold cross product size.

[0068] Embodiment 17: An apparatus including a processor and a machine-readable medium including program code, which when executed by the processor, causes the apparatus to parse a cloud resource binding query to extract a first plurality of binding rules and a first plurality of cloud resource queries, where the first plurality of binding rules include a first plurality of first-order predicates for pairs of cloud resources in the first plurality of cloud resources, query a database of cloud fingerprints for a first plurality of fingerprints for the first plurality of cloud resources associated with the first plurality of cloud resource queries, combine fingerprints in the first plurality of fingerprints according to the first plurality of first-order predicates in the first plurality of binding rules to generate a first plurality of pair-wise binding results, and merge the first plurality of pair-wise binding results.

[0069] Embodiment 18: The apparatus of embodiment 17, wherein the program code combines fingerprints in the first plurality of fingerprints according to the first plurality of primary predicates to generate a first plurality of dynamic indexes for each pair of cloud resources corresponding to the first plurality of primary predicates, and uses the plurality of dynamic indexes to search each pair of cloud resources corresponding to the first plurality of primary predicates for results that satisfy at least one of the first plurality of primary predicates.

[0070]

[0036] Embodiment 19: The apparatus of embodiment 17, wherein the first plurality of fingerprints includes characteristics of queries to one or more objects stored in the first plurality of cloud resources.

[0071]

[0036] Embodiment 20: The apparatus of embodiment 19, wherein the characteristics of queries for one or more objects stored in the first plurality of cloud resources include a frequency of querying the one or more objects.

Claims

1. A method for executing a cloud resource join query by a computer, comprising: Parsing the cloud resource binding query; Extracting multiple join rules and multiple cloud resource queries; the plurality of join rules include a plurality of first-order predicates for pairs of cloud resources in a plurality of cloud resources; Steps and Querying a database of cloud fingerprints for a plurality of fingerprints for the plurality of cloud resources associated with the plurality of cloud resource query; combining fingerprints in the plurality of fingerprints according to the plurality of first-order predicates in the plurality of combination rules; Generate multiple pairwise join results, Steps and merging the plurality of pairwise joining results; A method comprising:

2. The step of combining fingerprints in the plurality of fingerprints according to the plurality of first-order predicates further comprises: generating a plurality of dynamic indexes for each pair of cloud resources corresponding to the plurality of first-order predicates; searching each pair of cloud resources corresponding to the plurality of primary predicates for a result that satisfies at least one of the plurality of primary predicates using the plurality of dynamic indexes; The method of claim 1 , comprising:

3. The plurality of fingerprints include a characteristic of a query to one or more objects stored on the plurality of cloud resources; The method of claim 1.

4. The characteristics of a query to one or more objects stored on the plurality of cloud resources include: a frequency with which the one or more objects are queried; The method according to claim 3.

5. The method further comprises: updating the plurality of fingerprints based on recent queries to the plurality of cloud resources; The method of claim 3 , comprising:

6. The method further comprises: querying the plurality of cloud resources for objects represented in the merged plurality of pairwise join results; The method of claim 1 , comprising:

7. The method further comprises: communicating at least one of the merged pairwise join results and the query results to the cloud resources to a computing device communicatively coupled to a user interface; The method of claim 6, comprising:

8. The step of analyzing the cloud resource binding query further comprises: execute if it is determined that a cross product size of the cloud resource join query exceeds a threshold cross product size, and not execute if it is determined that the cross product size does not exceed a threshold cross product size. The method of claim 1.

9. A program for causing a computer to execute the method according to any one of claims 1 to 8, One or more non-transitory computer-readable storage media.

10. A computer processor; A computer-readable storage medium storing a program for causing the processor of the computer to execute the method according to any one of claims 1 to 8; 13. An apparatus comprising:

Citation Information

Patent Citations

  • System and method for retrieving document

    JP2008210272A

  • Distributed data parallel method for reclaiming storage space

    JP2018073406A

  • Query execution apparatus, query execution method, and query execution program

    JP2018106624A

  • Method of defining javascript objects

    US20160077853A1