Accelerated query execution within a storage array
First Claim
1. An apparatus comprising:
- a storage array comprising a plurality of storage devices and a controller;
an indexer implemented in the storage array and configured to generate indexes over data stored in the storage array; and
an analytic data store;
wherein the controller comprises a query processing control point configured to utilize the indexes generated by the indexer to accelerate execution of queries directed to the data stored in the storage array;
wherein at least a subset of the queries directed to the data stored in the storage array comprise analytic queries generated at least in part utilizing the analytic data store;
wherein the query processing control point is configured to draw information about the data stored in the storage array directly from the indexes and generate a response to at least a portion of a given one of the analytic queries using the information drawn directly from the indexes;
wherein the query processing control point comprises a query director implemented in the storage array using a container of the storage array;
wherein the query director processes queries of at least first and second different types and is configured to differentiate between queries received via at least one component of the analytic data store as being one or more of the first type queries, and queries received via one or more database connectivity connectors as being one or more of the second type queries;
wherein the query director is further configured to;
direct the one or more of the first type queries to the indexes instead of the data, and to direct the one or more of the second type queries to the data instead of the indexes; and
interact with the analytic data store by receiving the one or more of the first type queries from at least one external table of the analytic data store that is configured to generate the one or more of the first type queries to be applied against the indexes via the query director;
wherein the query director is operatively coupled to one or more logs of the storage array for implementation of updates to the indexes within the storage array;
wherein the storage array comprises a compute-capable storage array having integrated compute capabilities and a file system configured to store the indexes; and
wherein the indexer and the controller are implemented in software executed within the storage array.
9 Assignments
0 Petitions
Accused Products
Abstract
A data storage system comprises a storage array and an associated indexer that may be implemented in whole or in part within the storage array. The storage array comprises storage devices and a controller. The indexer associated with the storage array is configured to generate indexes over data stored in the storage array. The controller comprises a query processing control point configured to utilize the indexes generated by the indexer to accelerate execution of queries directed to the data stored in the storage array. The indexes may be stored in a high-speed memory of the storage array, such as flash memory. The queries executed in the storage array may comprise analytic queries that would otherwise normally be executed in an analytic data store external to the storage array. By providing index-based processing of the queries within the storage array, query processing throughput of the data storage system is substantially improved.
25 Citations
26 Claims
-
1. An apparatus comprising:
-
a storage array comprising a plurality of storage devices and a controller; an indexer implemented in the storage array and configured to generate indexes over data stored in the storage array; and an analytic data store; wherein the controller comprises a query processing control point configured to utilize the indexes generated by the indexer to accelerate execution of queries directed to the data stored in the storage array; wherein at least a subset of the queries directed to the data stored in the storage array comprise analytic queries generated at least in part utilizing the analytic data store; wherein the query processing control point is configured to draw information about the data stored in the storage array directly from the indexes and generate a response to at least a portion of a given one of the analytic queries using the information drawn directly from the indexes; wherein the query processing control point comprises a query director implemented in the storage array using a container of the storage array; wherein the query director processes queries of at least first and second different types and is configured to differentiate between queries received via at least one component of the analytic data store as being one or more of the first type queries, and queries received via one or more database connectivity connectors as being one or more of the second type queries; wherein the query director is further configured to; direct the one or more of the first type queries to the indexes instead of the data, and to direct the one or more of the second type queries to the data instead of the indexes; and interact with the analytic data store by receiving the one or more of the first type queries from at least one external table of the analytic data store that is configured to generate the one or more of the first type queries to be applied against the indexes via the query director; wherein the query director is operatively coupled to one or more logs of the storage array for implementation of updates to the indexes within the storage array; wherein the storage array comprises a compute-capable storage array having integrated compute capabilities and a file system configured to store the indexes; and wherein the indexer and the controller are implemented in software executed within the storage array. - View Dependent Claims (2, 3, 4, 5, 8, 9, 10, 11, 12, 13)
-
-
6. An apparatus comprising:
-
a storage array comprising a plurality of storage devices and a controller; and an indexer implemented in the storage array and configured to generate indexes over data stored in the storage array; wherein the controller comprises a query processing control point configured to utilize the indexes generated by the indexer to accelerate execution of queries directed to the data stored in the storage array; wherein the indexes comprise one or more join indexes and one or more content indexes; wherein functionality of the indexer is at least in part federated so as to permit at least a portion of one or more of the indexes to comprise data from multiple distinct data sources including one or more data sources external to the storage array; wherein the query processing control point comprises a query director implemented in the storage array using a container of the storage array; wherein the query director processes queries of at least first and second different types and is configured to differentiate between queries received via at least one component of an analytic data store as being one or more of the first type queries, and queries received via one or more database connectivity connectors as being one or more of the second type queries; wherein the query director is further configured to; direct the one or more of the first type queries to the indexes instead of the data, and to direct the one or more of the second type queries to the data instead of the indexes; and interact with the analytic data store by receiving the one or more of the first type queries from at least one external table of the analytic data store that is configured to generate the one or more of the first type queries to be applied against the indexes via the query director; wherein the query director is operatively coupled to one or more logs of the storage array for implementation of updates to the indexes within the storage array; wherein the storage array comprises a compute-capable storage array having integrated compute capabilities and a file system configured to store the indexes; and wherein the indexer and the controller are implemented in software executed within the storage array. - View Dependent Claims (7, 20, 21, 22, 23, 26)
-
-
14. A method comprising:
-
generating indexes over data stored in a storage array comprising a plurality of storage devices, wherein an indexer configured to generate the indexes is implemented in the storage array; and utilizing the indexes to accelerate execution of analytic queries directed to the data stored in the storage array by; drawing information about the data stored in the storage array directly from the indexes; and generating a response to at least a portion of a given one of the analytic queries using the information drawn directly from the indexes; wherein the generating and utilizing are performed at least in part by a controller comprising a query processing control point implemented within the storage array; and wherein the query processing control point comprises a query director implemented in the storage array using a container of the storage array; wherein the query director processes queries of at least first and second different types and is configured to differentiate between queries received via at least one component of an analytic data store as being one or more of the first type queries, and queries received via one or more database connectivity connectors as being one or more of the second type queries; wherein the query director is further configured to; direct the one or more of the first type queries to the indexes instead of the data, and to direct the one or more of the second type queries to the data instead of the indexes; and interact with the analytic data store by receiving the one or more of the first type queries from at least one external table of the analytic data store that is configured to generate the one or more of the first type queries to be applied against the indexes via the query director; wherein the query director is operatively coupled to one or more logs of the storage array for implementation of updates to the indexes within the storage array; wherein the storage array comprises a compute-capable storage array having integrated compute capabilities and a file system configured to store the indexes; and wherein the indexer and the controller are implemented in software executed within the storage array. - View Dependent Claims (15, 16, 17, 18, 19, 24, 25)
-
Specification