DataWorks OpenAPI(2024-05-18)支持多种元数据实体查询,本文提供了相关元数据实体的概念说明。
元数据实体对象
数据地图通过元数据采集器采集并纳管了不同类型和不同层级(子类型)的元数据实体对象。完整的采集器类型支持列表请参见采集器类型(CrawlerType)支持列表。
按照元数据层级结构,数据地图支持的完整元数据实体层级分为:
Catalog (数据目录)
Database(数据库)
Schema(数据库模式)
Table(数据表)
Column(字段)
其中,不同采集器类型对于实体层级的支持情况不同。
采集器类型(CrawlerType)支持列表
标识 | 展示名称 | 支持的元数据实体层级 | 备注 | ||||
Catalog | DataBase | Schema | Table | Column | |||
| MaxCompute | ❌ | ❌ | ✅ | ✅ | ✅ |
|
| Data Lake Formation | ✅ | ✅ | ❌ | ✅ | ✅ | 提供默认采集器,标识主账号下所有元数据实体。 |
| HMS | ❌ | ✅ | ❌ | ✅ | ✅ |
|
| Hologres | ❌ | ✅ | ✅ | ✅ | ✅ | - |
| MySQL | ❌ | ✅ | ❌ | ✅ | ✅ | - |
| Oracle | ❌ | ✅ | ✅ | ✅ | ✅ | - |
| PostgreSQL | ❌ | ✅ | ✅ | ✅ | ✅ | - |
| SQL Server | ❌ | ✅ | ✅ | ✅ | ✅ | - |
| AnalyticDB MySQL | ❌ | ✅ | ❌ | ✅ | ✅ | 对应analyticdb_for_mysql和analyticdb_for_spark两种数据源类型。 |
| AnalytidDB MySQL 2.0 | ❌ | ✅ | ❌ | ✅ | ✅ | - |
| AnalyticDB PostgreSQL | ❌ | ✅ | ✅ | ✅ | ✅ | - |
| OTS | ❌ | ✅ | ❌ | ✅ | ✅ | - |
| ClickHouse | ❌ | ✅ | ❌ | ✅ | ✅ | - |
| StarRocks | ✅ | ✅ | ❌ | ✅ | ✅ | 支持Catalog,目前仅支持查询Internal Catalog下的元数据实体。 |
| Lindorm | ❌ | ✅ | ❌ | ✅ | ✅ | - |
实体类型(EntityType)
EntityType是元数据实体的类型标识,其格式为${CrawlerType}-${SubType}。
CrawlerType为采集器类型标识,如mysql、maxcompute、dlf、holo等。SubType为元数据实体子类型的标识,如catalog、database、schema、table、column。
以MaxCompute表为例,其EntityType为maxcompute-table。
元数据实体ID(MetaEntityId)
元数据实体ID:具有可读性,唯一性,可扩展性的元数据实体对象标识。
支持采集器元数据实例、以及 Catalog -> Database -> Schema -> Table -> Column实体对象。
通过:分隔符拼接各层级的标识符(对于不支持的层级使用空字符占位),形成元数据实体ID作为实体唯一标识。
采集器元数据实例
采集器元数据实体ID:元数据采集来源的唯一标识。
对于
MaxCompute和DLF类型,提供默认采集器,对应租户/主账号下所有元数据实体,其采集器元数据实体ID格式省略为${CrawlerType}。对于其他需要手动创建采集器的类型,其采集器元数据实体ID格式为
${CrawlerType}:${MetaSourceId}。CrawlerType: 采集器类型标识,如holo、mysql等。MetaSourceId:元数据来源标识。实例模式:对应实例ID/集群ID。
URL模式:对应URLEncode后的URL(Jdbc Url 或 Endpoint)。
示例:
对于
MaxCompute类型,采集器元数据实体ID为maxcompute。对于
Hologres类型,实例模式下,假设实例ID为i-z6j3kxxx7,采集器元数据实体ID为holo:i-z6j3kxxx7。对于
MySQL类型,URL模式下,假设URL为jdbc:mysql://47.0.X.X:3306/test_db,采集器元数据实体ID为mysql:jdbc%3Amysql%3A%2F%2F47.0.X.X%3A3306%2Ftest_db。
数据表相关元数据实体
元数据实体ID格式为${EntityType}:${MetaSourceId}:${Catalog}:${Database}:${Schema}:${Table}:${Column}
包含以下元素:
层级 | 属性 | 说明 |
- |
| 实体类型标识。 |
- |
|
对于 |
Catalog |
| 数据目录标识。 StarRocks类型为目录名称,DLF类型为目录ID,其他类型使用空字符占位。 |
Database |
| 数据库名称。 |
Schema |
| 数据库模式名称。 对于不支持schema的类型,使用空字符占位。 对于 |
Table |
| 数据表名称。 |
Column |
| 字段名称。 |
元数据实体示例
以下为MaxCompute、DLF、HMS、Hologres、MySQL几种常用类型的各层级元数据实体ID示例。
在如下ID示例中,通过:分隔符拼接各层级的标识符,对于不支持的层级使用空字符占位。
MaxCompute
仅开启三层结构模型的MaxCompute项目支持Schema层级,并需要在数据表和字段ID的相应位置处提供Schema名称。
未开启三层结构模型的MaxCompute项目不支持Schema层级,数据表和字段ID的相应位置处使用空字符占位。
以项目名project_name(已开启三层模型),模式名 schema_name,表名table_name,字段名column_name为例,各层级的实体ID如下:
层级 | ID |
采集器元数据实例 |
|
项目 |
|
模式 |
|
数据表 |
|
字段 |
|
以项目名project_name(未开启三层模型),表名table_name,字段名column_name为例,各层级的实体ID如下:
层级 | ID |
采集器元数据实例 |
|
项目 |
|
数据表 |
|
字段 |
|
DLF
以数据目录catalog_id,数据库名database_name,表名table_name,字段名column_name为例,各层级的实体ID如下:
层级 | ID |
采集器元数据实例 |
|
数据目录 |
|
数据库 |
|
数据表 |
|
字段 |
|
HMS
以EMR集群实例c-a1b2c3xxx为例,数据库名test_db,表名test_tbl,字段名test_col,各层级的实体ID如下:
层级 | ID |
采集器元数据实例 |
|
数据库 |
|
数据表 |
|
字段 |
|
Hologres
以Hologres实例hgpostcn-cn-a1b2c3xxx为例,对于数据库test_db,模式test_schema,数据表test_tbl,字段test_col,各层级的实体ID如下:
层级 | ID |
采集器元数据实例 |
|
数据库 |
|
模式 |
|
数据表 |
|
字段 |
|
MySQL
以MySQL数据源连接串jdbc:mysql://47.0.X.X:3306/test_db为例,对于数据库test_db,数据表test_tbl,字段test_col,各层级的实体ID如下:(通过对JDBC连接串进行URL编码生成MetaSourceId)
层级 | ID |
采集器元数据实例 |
|
数据库 |
|
数据表 |
|
字段 |
|