Flowchart of the Actions Taken for Each Query
Each query that requests aggregated data causes the AtScale engine to find out whether an aggregate table exists that will satisfy the query. There are two possible outcomes of this search: an appropriate aggregate table does not exist and an appropriate aggregate table does exist. This flowchart shows the actions that the engine takes for both outcomes.
-
A BI client application issues a query on aggregated data.
-
The AtScale engine receives the query and examines it.
-
The engine determines whether an aggregate table (either system-defined or user-defined) that can satisfy the query exists.
-
If an appropriate aggregate table does not exist, the engine takes these actions:
- Directs the query against the data in the cluster.
- Assesses the need for an aggregate table to satisfy the query and similar queries in the future.
- Reaches a decision on whether to create an aggregate table.
- If the decision is no, the actions triggered by the query are complete and the workflow ends.
- If the decision is yes, the engine defines an aggregate table.
- The next build process for the cube builds an instance of the new aggregate table. The workflow ends.
-
If an appropriate aggregate table does exist, the engine takes these actions:
- Directs the query to the current instance of the aggregate table, if the instance is active. The actions that the engine takes to run the query are complete.
- If the aggregate table is user-defined, the workflow ends.
- If the aggregate table is system-defined, assesses the quality of the definition for the query and future similar queries, determining whether a better aggregate table could be created.
- Decides whether or not the definition is still sufficient.
- If the definition is sufficient, preserves the definition. The workflow ends.
- If the definition is not sufficient, supersedes the aggregate-table definition with a new one. Retains the previous definition for comparisons and that definitions instances for statistics. Eventually, both the definition and instances are deleted.
- The next build process for the cube builds an instance of the new aggregate table. The actions triggered by the query are complete.