DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Kylin


Kylin is an open source distributed data analytics engine on top of Hadoop/Spark. It offers SQL interface to do OLAP on large datasets. [04][05][06]

Source Code
https://github.com/apache/kylin[02]
Developer
Country of Origin
CN
Start Year
2013 [04]
Former Name
KylinOLAP
Project Type
Open Source
Written in
Java
Supported Languages
Java
License
Apache v2

Unlike massive parallel processing engines like Hive and Presto, Kylin pre-calculates a set of data cubes, stores them in HBase, and directly looks up the results in them. If a query cannot be answered by the data cubes, it will be executed by the underlying process engine. In this way, Kylin is usually used as an accelerator of traditional parallel data processing engines.

Kylin is a pure OLAP engine, so it only supports SELECT queries. INSERT, UPDATE and DELETE are not supported.

Database Entry

Kylin


Kylin is an open source distributed data analytics engine on top of Hadoop/Spark. It offers SQL interface to do OLAP on large datasets.

Unlike massive parallel processing engines like Hive and Presto, Kylin pre-calculates a set of data cubes, stores them in HBase, and directly looks up the results in them. If a query cannot be answered by the data cubes, it will be executed by the underlying process engine. In this way, Kylin is usually used as an accelerator of traditional parallel data processing engines.

Kylin is a pure OLAP engine, so it only supports SELECT queries. INSERT, UPDATE and DELETE are not supported.[04][05][06]

History[04]


The Kylin project was started in 2013, from eBay's R&D in Shanghai, China. It was open sourced on Github as "KylinOLAP" in Oct 2014.

In Nov 2015, Kylin joined Apache Software Foundation incubator;

In Dec 2015, Apache Kylin became a Top Level Project.

Compression[07]


Kylin applies dictionary encoding to all dimension values in data cubes. Kylin's dictionary is order-preserving and supports mapping both from keys to values and vice versa. The dictionary is implemented as a radix tree.

Besides, Kylin also supports naive compression in HBase and Hive.

Data Model[08]


Data cubes are essentially HBase tables. Given a dimension column set, Kylin pre-aggregates all possible combinations of their attributes by map-reduce jobs, then encode the dimensions with dictionary encoding. Finally, Kylin encodes all data cubes to Rowkeys in HBase. The format of a Rowkey is cuboid id + attribute. For example, assume a data cube on year and city with cuboid id 00000001, and there is a row year=1994, city=Beijing, sum(sales)=100, and a dictionary maps 1994=0, Beijing=1, there will be an entry in the HBase table Rowkey=00000001+01, value=100.

Citations

8 sources
  1. http://www.kylin.io kylin.io Dead — Check Archive
  2. GitHub - apache/kylin: Apache Kylin · GitHub github.com
  3. Index of /docs apache.org
  4. Apache Kylin - Wikipedia wikipedia.org
  5. http://kylin.apache.org/docs/gettingstarted/faq.html apache.org Dead — Check Archive
  6. 403 Forbidden jianshu.com Dead — Check Archive
  7. http://kylin.apache.org/blog/2015/08/13/kylin-dictionary/ apache.org Dead — Check Archive
  8. 编程小梦|Apache Kylin Cube 构建原理 bcmeng.com
Revision #7