Apache Kylin : Analytical Data Warehouse for Big Data
Page History
...
PlantUML Render Macro | ||||
---|---|---|---|---|
| ||||
'============================================================ '============================================================ ' 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 { 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 { '============================================================ '============================================================ ' 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" > |
...