1. A computer implemented method for providing a requested data set, the computer comprising at least one processor and at least one memory, the method comprising: (a) providing a relation store in the memory; (b) receiving a plurality of query language statements; (c) accumulating a first plurality of algebraic relations in the relation store over time as the query language statements are received, including for each respective query language statement: (i) composing, by the computer, at least one algebraic relation from the respective query language statement, wherein the algebraic relation comprises a respective first expression including a symbolic representation of at least a first respective data set specified by the respective query language statement, a respective second expression including a symbolic representation of at least a second respective data set specified by the respective query language statement, and a relational operator symbolically defining a mathematical relationship between the respective first expression and the respective second expression; and (ii) storing the algebraic relation in the relation store; (d) composing, by the computer, a second plurality of algebraic relations based, at least in part, on a pattern of the query language statements that have been received; (e) storing the second plurality of algebraic relations in the relation store; (f) receiving a request for the requested data set; (g) composing, by the computer, a plurality of collections of algebraic relations defining a result equal to the requested data set using at least some of the algebraic relations stored in the relation store, including at least one of the algebraic relations from the second plurality of algebraic relations; (h) applying optimization criteria to select one of the collections of algebraic relations; and (i) using the selected collection of algebraic relations to provide the requested data set.