Apache Kylin : Analytical Data Warehouse for Big Data

Page tree

Welcome to Kylin Wiki.

reference issue KYLIN-5948 - Getting issue details... STATUS


01 Background


To enhance the performance of detail data and ad-hoc queries, the internal table feature is designed.
The internal table manage user's data directly in inner storage, where Kylin actively controls the data storage format and data organization to specifically improve query performance.

02 Dev Design


What needs to be done is as follows:
1. Define the internal table metadata

protected String project;
protected final DatabaseDesc database;
protected String identity;
protected String name;

private Map<String, String> tblProperties;
private StorageType storageType;
private String location;

public enum StorageType {
    parquet, //only for dev/UT
    gluten, //clickhouse mergetree (default)
    deltalake, //future
    iceberg  //future
} 

2. implement internal table catalog

We implement a kylin internal table catalog which extends TableCatalog of spark and we only need to implement the  loadTable function. The KyinternalCatalog get table metadata from kylin metadb and expose them as a ClickhouseTableV2(from apache gluten) to spark. 


3. implement create table, update table, delete table, truncate table functions etc.

Table management operations are implemented in web UI/open api(TODO), don't support DDL statement yet.

 
4. implement load data into internal table function

Support full load and incremental load.

5. Support partition, bucket feature
6. Support config table properties such as primaryKey, orderByKey
7. Support gluten-mergetree as default storage type

query process with internal table: 



03 Roadmap TODOs


1. Support cache pre-loading
2. Support more partition type

  • No labels