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實體物件。
通過:分隔字元拼接各層級的標識符(對於不支援的層級使用Null 字元佔位),形成中繼資料實體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,其他類型使用Null 字元佔位。 |
Database |
| 資料庫名稱。 |
Schema |
| 資料庫模式名稱。 對於不支援schema的類型,使用Null 字元佔位。 對於 |
Table |
| 資料表名稱。 |
Column |
| 欄位名稱。 |
中繼資料實體樣本
以下為MaxCompute、DLF、HMS、Hologres、MySQL幾種常用類型的各層級中繼資料實體ID樣本。
在如下ID樣本中,通過:分隔字元拼接各層級的標識符,對於不支援的層級使用Null 字元佔位。
MaxCompute
僅開啟三層結構模型的MaxCompute專案支援Schema層級,並需要在資料表和欄位ID的相應位置處提供Schema名稱。
未開啟三層結構模型的MaxCompute專案不支援Schema層級,資料表和欄位ID的相應位置處使用Null 字元佔位。
以專案名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 |
採集器中繼資料執行個體 |
|
資料庫 |
|
資料表 |
|
欄位 |
|