-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhome_features.html
More file actions
214 lines (185 loc) · 11.9 KB
/
home_features.html
File metadata and controls
214 lines (185 loc) · 11.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<html><head>
<title>DBToaster - Features</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" media="screen" />
<link rel="stylesheet" type="text/css" href="css/bootstrap-theme.min.css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link rel="stylesheet" href="http://fortawesome.github.io/Font-Awesome/assets/font-awesome/css/font-awesome.css">
</head> <body>
<a name="pagetop"></a>
<div class="overallpage">
<div class="pagebody">
<div class="logobox">
<a href="index.html" ><img src="dbtoaster-logo.gif" width="214"
height="100" alt="DBToaster"/></a> </div>
<div class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">About <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="index.html" >Welcome to dbtoaster.org</a></li>
<li><a href="home_about.html" >Is DBToaster right for you?</a></li>
<li><a href="home_performance.html" >Performance</a></li>
<li><a href="home_features.html" >Features</a></li>
<li><a href="home_features.html#roadmap" ><small><i class="fa fa-caret-square-o-right"></i> Roadmap</small></a></li>
<li><a href="home_people.html" >The Team</a></li>
<li><a href="home_research.html" >For Researchers</a></li>
</ul>
</li>
<li class="dropdown">
<!--?php if(!isset($now_building_distro)) { ?-->
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Downloads <b class="caret"></b></a>
<!--?php } else { ?-->
<!--a href="#" class="dropdown-toggle" data-toggle="dropdown">License <b class="caret"></b></a-->
<!--?php } ?-->
<ul class="dropdown-menu">
<!--?php if(!isset($now_building_distro)) { ?-->
<li><a href="download.html" >Downloads</a></li>
<!--?php } ?-->
<li><a href="download.html#license" >License</a></li>
<li><a href="download.html#changelog" >Changelog</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="docs.html" >Installation</a></li>
<li><a href="docs_start.html" >Getting Started</a></li>
<li><a href="docs_architecture.html" >Architecture</a></li>
<li><a href="docs_compiler.html" >Command-Line Reference</a></li>
<li><a href="docs_compiler.html#options" ><small><i class="fa fa-caret-square-o-right"></i> Command-Line Options</small></a></li>
<li><a href="docs_compiler.html#languages" ><small><i class="fa fa-caret-square-o-right"></i> Supported Languages</small></a></li>
<li><a href="docs_compiler.html#opt_flags" ><small><i class="fa fa-caret-square-o-right"></i> Optimization Flags</small></a></li>
<li><a href="docs_sql.html" >DBToaster SQL Reference</a></li>
<li><a href="docs_stdlib.html" >DBToaster StdLib Reference</a></li>
<li><a href="docs_adaptors.html" >DBToaster Adaptors Reference</a></li>
<li><a href="docs_cpp.html" >C++ Code Generation</a></li>
<li><a href="docs_scala.html" >Scala Code Generation</a></li>
<li><a href="docs_java.html" >DBToaster in Java Programs</a></li>
<li><a href="docs_customadaptors.html" >Custom Adaptors</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Contact <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="home_contact.html#inquiries" >Inquiries</a></li>
<li><a href="home_contact.html#mailing" >Mailing List</a></li>
<li><a href="bugs.html" >Bug Reports</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="contentwrapper">
<div class="content">
<div class="titlebox">Features</div>
<h3>1. Compilation of database queries to low-level code</h3><p>
Modern database query engines interpret queries -- using internal
representations close to relational algebra -- and database schemas.
This enables database systems to deal with dynamically changing workloads.
However, most database queries executed today are hardwired in applications.
DBToaster eliminates the need to interpret queries and data.
It compiles SQL queries to low-level code, eliminating all overheads
resulting from interpretation.
</p>
<h3>2. Code generation for C++, Scala, and Java</h3><p>DBToaster is able to generate both C++ and Scala code. The code can be integrated into applications written in these languages. Since Scala lives in the Java ecosystem and compiles to Java Bytecode, code generated by DBToaster can be linked into Java applications, too.</p>
<h3>3. Embedded query engines</h3><p>
Code generated by DBToaster can be linked into applications. No separate
runtime system is needed.
</p>
<h3>4. Online query processing</h3><p>
DBToaster generates code that maintains a query result as an in-memory
materialized view which is kept fresh as a stream of updates to the
base data (the virtual relational database over which the
query is asked) arrives. DBToaster code can also be used in alternative
ways. For example, one could start from an empty database and use the update
stream to load the database. This will cause DBToaster to evaluate the query
<i>online</i>, maintaining an accurate temporary query result, at all times, as
the data is loaded.
</p>
<h3>5. Support for standard SQL semantics</h3><p>
DBToaster supports traditional SQL semantics, rather than window semantics.
This is worth noting since due to its speed and ability to process high-volume
update streams, DBToaster will naturally be used in data stream processing
applications. Current data stream processing systems work with limited window
semantics to be able to process data streams. Since DBToaster does not suffer from this restriction, it can process update streams and can efficiently combine data streams with historical data.
</p>
<p>
Note: DBToaster's handling of the domains of GROUP-BY aggregate groups does not fully comply to the SQL standards. The discrepancy is minor: DBToaster's result is always complete according to the SQL standard, but may contain additional null value rows that an application can simply ignore. See the DBToaster documentation for details. This incompatibility will be fixed soon.
</p>
<h3>6. Materialized views of nested queries</h3><p>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.</p>
<p>Nesting refers to the presence of select-statements (SQL queries) in the SELECT, FROM, or WHERE clauses of SQL queries.</p>
<h3>7. The Viewlet Transform</h3><p>Modern database management systems frequently support
<i>incremental view maintenance</i>,
a mechanism for taking a shortcut to efficiently refresh
a materialized view when the base data changes. Rather than re-evaluating
the query that defines the view, an alternative query (the <i>delta query</i>)
is executed which determines what changes need to be effected on the materialized view to bring it up to date. DBToaster deploys a unique mechanism, the
<i>viewlet transform</i> to shortcut this computation much more aggressively,
reducing the amount of work necessary to refresh a view dramatically.
</p>
<h3>8. Powerful optimizers</h3><p>
DBToaster is a powerful optimizing compiler that implements state-of-the-art
optimizations both from the databases and compilers research literature.
Optimization is performed at multiple stages and levels or abstraction, from
SQL and DBToaster's internal calculus to the backend functional and imperative
code representations.
</p>
<a name="roadmap"></a>
<h3>9. Feature Roadmap</h3>
<table class="table" valign="top">
<thead><th>Milestone</th><th width="20%">Expected Date</th><th>Feature summary</th></thead>
<tr><td><strong>1</strong></td><td valign="top">Dec. 2014</td>
<td>
<ul>
<li>A parallel runtime for DBToaster.</li>
</ul>
</td></tr>
<tr><td valign="top"><strong>2</strong></td><td valign="top">June 2015</td>
<td>
<ul>
<li>Frontends for APL-style array processing languages (The R analytics language; Matlab; Q).</li>
<li>Support for all SQL functionality required by the TPC-H benchmark except LIMIT, ORDER-BY, MIN/MAX, and NULL-values/outer joins.</li>
</ul>
</td></tr>
<tr><td valign="top"><strong>3</strong></td><td valign="top">Dec. 2015</td>
<td>
<ul>
<li>Synthesize (tree) data structures for efficiently processing and indexing theta-joins.</li>
<li>Support order. ORDER-BY, MIN, and MAX.</li>
</ul>
</td></tr>
</table>
<h4>9.1. SQL92 Support</h4><p>DBToaster presently only supports the COUNT, COUNT DISTINCT, SUM, and AVG aggregates. Support for MIN and MAX is slated for Milestone 3. </p>
<p>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 2. Support for LIMIT and ORDER BY is slated for Milestone 3.</p>
<p>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.</p>
<p>All other unsupported features of SQL92 will be implemented in a future release.</p>
<h4>9.2. Scalability</h4>
<p>DBToaster's internal aggregate calculus has several properties that make it extremely amenable to distribution. We are in the process of implementing a scalable distributed runtime for DBToaster, slated for release as Milestone 1.</p>
<h4>9.3. Dynamic Runtimes</h4>
<p>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.</p>
<h4>9.4. On-Demand Template Execution</h4>
<p>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.</p>
</div><!-- /content -->
</div><!-- /contentwrapper -->
</div><!-- /pagebody -->
<div class="footer">
<hr/>
<p>Copyright (c) 2009-2014, The DBToaster Consortium. All rights reserved.</p>
</div>
</div><!-- /overallpage -->
<div id="pageEndElem" style="padding: 0 20px;"></div>
<script type="text/javascript" src="js/jquery-2.0.3.min.js"> </script>
<script type="text/javascript" src="js/bootstrap.min.js"> </script>
</body>
</html>