Apache Calcite: One planner fits all

10
One planner fits all (How Apache Calcite makes it easier to write a DBMS) Lightning talk at XLDB 2015 Stanford, California Julian Hyde (Hortonworks)

Transcript of Apache Calcite: One planner fits all

Page 1: Apache Calcite: One planner fits all

One planner fits all (How Apache Calcite makes it easier to write a DBMS)

Lightning talk at XLDB 2015 Stanford, California

Julian Hyde (Hortonworks)

Page 2: Apache Calcite: One planner fits all

–Mike Stonebraker (2005)

“One size fits all” is an idea whose time has come and gone

Page 3: Apache Calcite: One planner fits all

• Hadoop and other open source technologies have deconstructed the DBMS

• Query parser/API + catalog + authorization + algorithms + scheduler + engine + data format + storage

Page 4: Apache Calcite: One planner fits all

image credit: http://oliviaobryon.com

Page 5: Apache Calcite: One planner fits all

image credit: http://oliviaobryon.com

Interesting

Boring

Page 6: Apache Calcite: One planner fits all

Conventional DB

Parser

Algebra

Catalog

Data

Algorithms

Page 7: Apache Calcite: One planner fits all

Apache Calcite DB framework

Parser

Algebra

Engine

Data

Engine

Data

Engine

Data

Schema SPI Operators, Rules,

Statistics, Cost model

Page 8: Apache Calcite: One planner fits all

SELECT products.name, COUNT(*) FROM salesJOIN products USING (productId) WHERE sales.discount IS NOT NULLGROUP BY products.name ORDER BY COUNT(*) DESC

scan [products]

scan [sales]

join

filter

aggregate

sort

scan [products]

scan [sales]

filter’

join’

aggregate

sort

FilterIntoJoinRule

translate SQL to relational

algebra

Page 9: Apache Calcite: One planner fits all

Relational algebra• Robust

• Allows re-use

• Complex cost-based optimization

• Multiple front-ends & back-ends

• Not just for “flat” relations

SQL OtherQL API

AlgebraRules

Engine A

Engine B

Page 10: Apache Calcite: One planner fits all

Thank you!Download: http://calcite.incubator.apache.org

Use Calcite to build your next database!

Calcite powers Apache Hive, Drill, Phoenix, Kylin

An Apache Incubator projectsince May 2014

@julianhyde

What’s in the box?

• SQL parser & AST • JDBC/ODBC framework • Built-in operators (project,

filter, …) • In-memory engine • 100+ rules • Planning engines • Adapters (CSV, JDBC,

Mongo, …) • Streaming SQL • Materialized views

ApacheCalciteApache Calcite