THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!

Apache Kylin : Analytical Data Warehouse for Big Data

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PlantUML Render Macro
aligncenter
titleQuery Engine Diagram


'============================================================

'============================================================

' Schema/Connection Related


class QueryConnection {

    Connection getConnection(String project);

}



class OLAPSchemaFactory <<SchemaFactory>> {

    Schema create(SchemaPlus parentSchema, String schemaName, Map<String, Object> operand);

}


class OLAPSchema <<AbstractSchema>> {

    Map<String, Table> getTableMap(); // OLAPTable


}


class OLAPTable <<AbstractQueryableTable, TranslatableTable>>{

    RelNode toRel(ToRelContext context, RelOptTable relOptTable) // return OLAPTableScan

    <T> Queryable<T> asQueryable(QueryProvider queryProvider, SchemaPlus schema, String tableName); 

   Enumerable<Object[]> executeOLAPQuery(DataContext optiqContext, int ctxSeq)

}


class OLAPQuery << AbstractEnumerable<Object[]>, Enumerable<Object[]> >> {

    Enumerator<Object[]> enumerator() ; // return OLAPEnumerator

}



QueryConnection -- OLAPSchemaFactory : "Register factory method to prepare all schema" >

OLAPSchemaFactory -- OLAPSchema

OLAPSchema -- OLAPTable

OLAPTable -- OLAPQuery : "asQueryable()" >

OLAPTable -- OLAPTableScan : "toRel()" >

OLAPQuery -- OLAPEnumerator : "enumerator()" > 


OLAPEnumerator – IStorageQuery : "Connect Point from Calcite side to Storage Layer side"


'============================================================

'============================================================

' Storage Related Code


interface IStorageQuery {

    ITupleIterator search(StorageContext context, SQLDigest sqlDigest, TupleInfo returnTupleInfo);

}


interface ITupleIterator  << Iterator<ITuple> >> {

}




class SQLDigest {

}


abstract class GTCubeStorageQueryBase implements IStorageQuery {

    GTCubeStorageQueryRequest getStorageQueryRequest(StorageContext context, SQLDigest sqlDigest, TupleInfo returnTupleInfo) 

}





IStorageQuery – ITupleIterator : "Return GridRecord into Calcite" > 




'============================================================

'============================================================

' Grid Table Related Code


interface IGTStore {

    GTInfo getInfo();

    IGTWriter rebuild() throws IOException;

    IGTWriter append() throws IOException;

    IGTScanner scan(GTScanRequest scanRequest) throws IOException;

}


interface IGTScanner extends Iterable_GTRecord {
    GTInfo getInfo();

    Iterator<GTRecord> iterator();
}




class GTScanRequest {


}


class GTRecord implements Comparable_GTRecord {

    ByteArray[] cols;

    GTInfo info;

}


class CuboidToGridTableMapping {


}






class GTAggregateScanner implements IGTScanner {

}



'============================================================

'============================================================

' Tuple Related Code


class Tuple implements ITuple {

}


interface ITuple <<IEvaluatableTuple>> implements IEvaluatableTuple {

    List<TblColRef> getAllColumns();

    Object[] getAllValues();

}


interface IEvaluatableTuple {

    Object getValue(TblColRef col);

}


abstract class TupleFilter {


}


class TupleInfo {
    Map<String, Integer> fieldMap;
    Map<TblColRef, Integer> columnMap;
}



'============================================================

'============================================================

' Calcite Related Code


class Baz #red {

    // Generated code call OLAPEnumerator#moveNext

}


class OLAPEnumerator #red  << Enumerator<Object[]> >> #red  {

    Object[] current()

    boolean moveNext()

    void convertCurrentRow(ITuple tuple) // Here, ITuple is converted into Object array

    ITupleIterator queryStorage()

}


Baz – OLAPEnumerator : "moveNext and process" >


...