DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Table of Contents
Status
Current state: [One of "Under Discussion", "Accepted", "Rejected"]Released
Discussion thread:
JIRA or Github Issue:
Released: <Doris Version>1.2.0
Google Doc: <If the design in question is unclear or needs to be discussed and reviewed, a Google Doc can be used first to facilitate comments from others.>
...
| Code Block |
|---|
# No additional syntax will be added. If you need to authorize privilege under other datasource, you need to switch ds first. # During initialization, you can use the admin account to switch to the new ds to create the permissions of the initial account. grant all on db.tbl to user@%; |
3-Basic data structure
Scheduling
| Code Block |
|---|
+---------------------+
+--->|HMSExternalDataSource|
| +---------------------+
+-----------------------+ | +---------------------+
|ExternalDataSource | +--->|EsExternalDataSource |
| +---+ +---------------------+
+-----> listDatabaseNames()| | +---------------------++
| | tableExists() | +--->|OdbcExternalDataSource|
+-------------------+ | | getTableSchema() | | +----------------------+
| DataSourceIf | | | ... | | +----------------------+
| +----+ +-----------------------+ +--->|HttpExternalDataSource|
| getDatabase() | +----------------------+
| listDatabases()+----+ +-----------------------+
| ... | | |InternalDataSource |
+-------------------+ | | |
+-----> self-managed meta |
| |
+-----------------------+
+-------------------+ +-----------------------+
| DatabaseIf +---------->ExternalDatabase |
| | +-----------------------+
| getTable() |
| listTable() | +-----------------------+
| ... +---------->Database |
+-------------------+ +-----------------------+
+-------------------+ +-----------------------+
| TableIf +---------->ExternalTable |
| | +-----------------------+ +----------+
| getColumn() | +---->|OlapTable |
| getSchema() | +-----------------------+ | +----------+
| ... +---------->Table +---+ +----------+
+-------------------+ +-----------------------+ +---->|OdbcTable |
+----------+ |
Interfaces:
- DataSourceIf: provide getDatabase(), listDatabases(), etc.
- DatabaseIf: provide getTable(), listTables(), etc.
- TableIf: provide getColumn(), getSchema(), etc.
Classes:
- InternalDataSource implements DataSourceIf: contains all self-managed metadata.
- ExternalDataSource implements DataSourceIf: contains all not-self-managed metadata which should be got from external data source.
- HMSExternalDataSource: hive metastore compatible data sources.
- EsExternalDataSource: elasticsearch
- OdbcExternalDataSource: odbc compatible data sources
- HttpExternalDataSource: for http api
- ...
- ExternalDatabase implements DatabaseIf: database got from external data source.
- Database implements DatabaseIf: the self-managed databases.
- ExternalTable implements TableIf: table got from external data source.
- Table implements TableIf: the self-managed tables
- OlapTable
- MysqlTable
- OdbcTable
- ...
- ExternalScanNode: for external table scan task.
- MetaObjCache: To cache and manage all external meta objects.
Scheduling
- Creation of DataSource (In review)
- create/drop/alter/show/switch syntax support
- Persistence of DataSource
- https://github.com/apache/incubator-doris/pull/10033
- InternalDataSource Support (Already merged)
- The change of the original interface ensures that the previous use logic remains unchanged.
- https://github.com/apache/incubator-doris/pull/9953
- https://github.com/apache/incubator-doris/pull/10044
- HMSExternalDataSource Support (Under development, 6.17)
- Ability to synchronize HiveMetaStore data sources
- Able to show databases, show tables, desc table, information schema
- Can be converted to the original Hive/HudiScanNode for data query
- https://github.com/apache/incubator-doris/pull/10028
- FE side ExternalFileScanNode development (Under development, 6.17)
- Unify hive/iceberg/hudi scan node
- Support partition prunning and other functions
- https://github.com/apache/incubator-doris/pull/9973
- BE side ExternalFileScanNode development (6.24)
- Replace the BrokerScanNode
- Only supported in the vectorized engine, with the vectorized parquet/orc reader
- DataSource permission management (Under development, 6.17)
- Support DataSource-level permission management
- SQL syntax support (6.24)
- SQL syntax supports three-level qualified names
- Support query across DataSource
- Parquet predicate pushdown (Designing, 6.24)
- Support column pruning and predicate filtering for parquet files
- Test and Bug Rush (6.30)
- [3-7] test of part of the work
- Functionally the same as before
At the end of June, support access to hive, iceberg, hudi through the new framework, and the performance is better than before.
==================================================
- Read optimization of ORC/Text file format (ByteDance)
- ESExternalDataSource support
- ODBCExternalDataSource support
- Support for appearance statistics
- Collection and display interface of statistics
- Statistics framework that needs to be combined with the new optimizer
- Meta Object
- Define basic data structures, including DataSource interface, ExternalScanNode, ExternalTable, etc.
- POC: Access to the hive metastore data source using these basic data structure.
- Support dynamic loading user defined datasource using SPI.
- SQL parser: Support datasource qualifier.
- Privilege: Support privilege management for datasource level.
- Metadata Cache