Dynamic streaming of query responses
AssigneeCisco Technology, Inc.
InventorsEric Vandenberg, Arjun Iyer
Life of this patent
Estimating the term…
Abstract
Instead of processing a query as-is, the query is chunked or broken down into a sequence of smaller chunked queries and the chunked results of those smaller queries are streamed back to the requester. Chunking the query and streaming the chunked results can substantially decrease the user's time to value when running a query by returning some immediate results for display which are refined and eventually converge on the full results as each chunked query runs.
Claims20
A system for monitoring a business transaction, comprising:
- a processor;
- a memory;
- and one or more modules stored in the memory and executable by a processor to perform operations comprising:
- receive, from a user interface client, a query for data indicative of performance of a monitored business transaction;
- estimate a wait time for the received query to return an overall result to be displayed;
- determine whether to chunk the received query to generate multiple chunked queries by comparing the estimated wait time against a predetermined threshold, the predetermined threshold indicative of an acceptable user experience;
- based on the determining, chunk the received query to generate the multiple chunked queries using a query chunking strategy selected from chunking strategy candidates, wherein the chunking strategy candidates are each associated with corresponding query equivalence classes that are identified based on dominant analytics functional parts of the received query, wherein a) the query equivalence classes are based on time-series, range, group by, or other analytics functions parsed out of the received query and b) each of the corresponding chunking strategy candidates is designed to work on a particular class of queries based on speed or time;
- after chunking the received query, determine an order of the multiple chunked queries based on the processing time of each of the multiple chunked queries, wherein the order includes processing part of the multiple chunked queries in parallel;
- process the generated multiple chunked queries in the order, wherein a result for each chunked query represents a portion of the overall result for the received query;
- and
- dynamically stream the result from each chunked query to the user interface client to be displayed as the processing of the chunked queries are completed so as to cause the overall result for the received query to be displayed portion by portion until converging on the overall result as the processing of all of the chunked queries are completed.
A method for monitoring a business transaction, comprising:
- receiving, from a user interface client, a query for data indicative of performance of a monitored business transaction;
- estimating a wait time for the received query to return an overall result to be displayed;
- determining whether to chunk the received query to generate multiple queries by comparing the estimated wait time against a predetermined threshold, the predetermined threshold indicative of an acceptable user experience;
- based on the determining, chunking the received query to generate multiple chunked queries using a query chunking strategy selected from chunking strategy candidates, wherein the chunking strategy candidates are each associated with corresponding query equivalence classes that are identified based on dominant analytics functional parts of the received query, wherein a) the query equivalence classes are based on time-series, range, group by, or other analytics functions parsed out of the received query and b) each of the corresponding chunking strategy candidates is designed to work on a particular class of queries based on speed or time;
- after chunking the received query, determining an order of the multiple chunked queries based on the processing time of each of the multiple chunked queries, wherein the order includes processing part of the multiple chunked queries in parallel;
- processing the generated multiple chunked queries in the order, wherein a result for each chunked query represents a partial result for the received query;
- dynamically streaming the result from each chunked query to the user interface client to cause the result from a corresponding chunked query to be displayed and aggregated until converging to an overall result for the received query;
- and monitoring performance metrics of the chunking strategy.
A non-transitory computer readable medium embodying instructions when executed by a processor to cause operations to be performed comprising:
- receiving, from a user interface client, a query for data indicative of performance of a monitored business transaction;
- estimating a wait time for the received query to return an overall result to be displayed;
- determining whether to chunk the received query to generate multiple chunked queries by comparing the estimated wait time against a predetermined threshold, the predetermined threshold indicative of an acceptable user experience;
- based on the determining, chunking the received query to generate multiple chunked queries using a query chunking strategy selected from chunking strategy candidates, wherein the chunking strategy candidates are associated with a query equivalence class that is identified based on the dominant analytics functional parts of the query, wherein the chunking strategy candidates are each associated with corresponding query equivalence classes that are identified based on dominant analytics functional parts of the received query, wherein a) the query equivalence classes are based on time-series, range, group by, or other analytics functions parsed out of the received query and b) each of the corresponding chunking strategy candidates is designed to work on a particular class of queries based on speed or time;
- after chunking the received query, determining an order of the multiple chunked queries based on the processing time of each of the multiple chunked queries, wherein the order includes processing part of the multiple chunked queries in parallel;
- processing the generated multiple chunked queries, wherein a result for each chunked query represents a partial result for the received query;
- and dynamically streaming the result from each chunked query to the user interface client to cause the result from a corresponding chunked query to be displayed and aggregated until converging to an overall result for the received query.
Dependencies are inferred from the claim text.