Features

1. Materialized Views of Nested Queries

DBToaster supports efficient materialized views of nested SQL queries. Many commercial database systems support materialized views / incremental view maintenance, but no other system does so for nested SQL queries, even though they are essential for complex analytics.

Nesting refers to the presence of select-statements (SQL queries) in the SELECT, FROM, or WHERE clauses of SQL queries.

2. C++ and Scala code Generation

DBToaster is able to generate both C++ an Scala code that can be integrated into applications written in these languages (as well as Java, since Scala lives in the Java ecosystem and compiles to Java Bytecode that can be linked with Java applications).

3. Feature Roadmap

MilestoneExpected DateFeature Summary
Milestone 1Fall 2012
  • Support for all SQL functionality required by the TPC-H benchmark except ORDER-BY, MIN/MAX, and NULL-values/outer joins.
  • Further performance improvements
Milestone 2Winter 2012/Spring 2013
  • A parallel runtime for DBToaster
Milestone 3Summer 2013
  • Updated backend optimizer (code fusion, beta-reduction, etc...), updated C++ code generator, generation of custom-datastructures for maintenance. Phase out Boost. This should lead to considerable efficiency improvements.
  • Synthesis of tree-based datastructures for efficiently processing and indexing theta-joins.
  • Support order; Support for ORDER-BY, MIN and MAX
Milestone 4Fall 2013
  • Frontends for APL-style array processing languages (e.g., The R analytics language, Matlab, Q). DBToaster will be able to compile analytical queries expressed in such langauges in addition to SQL, with similar performance.

3.1. SQL92 Support

DBToaster presently only supports the COUNT, COUNT DISTINCT, SUM, and AVG aggregates. Support for MIN and MAX is slated for Milestone 3.

DBToaster does not presently suport the DISTINCT, UNION, LIMIT, ORDER BY and HAVING clauses of SELECT statements. Support for DISTINCT, UNION, and HAVING is slated for Milestone 1. Support for LIMIT and ORDER BY is slated for Milestone 4.

DBToaster does not presently support SQL's NULL value semantics (including OUTER JOINs). We are investigating several potential solutions, and will commit to a milestone once more research has been performed.

All other unsupported features of SQL92 will be implemented as resources become available, or if there is sufficient demand.

3.2. Scalability

DBToaster's internal aggregate calculus has several properties that make it exteremely ammenable to distribution. We are in the process of implementing a scalable distributed runtime for DBToaster, slated for release as Milestone 2.

3.3. Dynamic Runtimes

We are aware of demand for a platform for executing DBToaster-generated engines, where the query workload can be managed dynamically (i.e., queries can be added/removed at runtime). This feature is slated for release, but at present we do not have the resources to commit to a specific milestone.

3.4. On-Demand Template Execution

A powerful application of DBToaster is for evaluating template-style queries. When an application is compiled, a DBToaster-generated engine could be produced to efficiently support evaluation of one or more queries with externally-bound variables. Presently, a fragment of such queries can be implemented by rewriting the query to include externally bound variables as output columns. We hope to have this feature implemented in an upcoming milestone release