1. A method for performing queries on a distributed time series data storage system having a time series database that stores data blocks containing time stamped data across a plurality of computing devices, and an index database that stores an index associated with the time stamped data in each data block, the method comprising: sending a query to a query layer running on a first computing device, the query specifying criteria that define a set of data retrieved from the time series data storage system and an analysis performed on the set of data; requesting from the index database the indices associated with the data blocks stored in the time series database needed to evaluate the query; returning the indices back to the query layer; preparing a sub-query that produces appropriate data matching the criteria, the sub-query including the criteria and a logical operation performed on the data matching the criteria; forwarding the sub-query to an evaluator running on each of the plurality of computing devices that are identified in the returned indices as holding data corresponding to the data blocks needed to evaluate the query; evaluating the criteria specified in the sub-query in each evaluator with respect to the data blocks stored on the same computing device on which the evaluator is running in order to select a subset of data; performing the logical operation specified in the sub-query in each evaluator on the subset of data generated in that evaluator in the evaluating step above to generate a sub-result; receiving each sub-result from each evaluator at an output handler; and combining the sub-result from each evaluator into a query result.
1. A method for performing queries on a distributed time series data storage system having a time series database that stores data blocks containing time stamped data across a plurality of computing devices, and an index database that stores an index associated with the time stamped data in each data block, the method comprising: sending a query to a query layer running on a first computing device, the query specifying criteria that define a set of data retrieved from the time series data storage system and an analysis performed on the set of data; requesting from the index database the indices associated with the data blocks stored in the time series database needed to evaluate the query; returning the indices back to the query layer; preparing a sub-query that produces appropriate data matching the criteria, the sub-query including the criteria and a logical operation performed on the data matching the criteria; forwarding the sub-query to an evaluator running on each of the plurality of computing devices that are identified in the returned indices as holding data corresponding to the data blocks needed to evaluate the query; evaluating the criteria specified in the sub-query in each evaluator with respect to the data blocks stored on the same computing device on which the evaluator is running in order to select a subset of data; performing the logical operation specified in the sub-query in each evaluator on the subset of data generated in that evaluator in the evaluating step above to generate a sub-result; receiving each sub-result from each evaluator at an output handler; and combining the sub-result from each evaluator into a query result. 14. The method of claim 1 , wherein the query layer is running on one of the plurality of computing devices.