Catalog 概述
Catalog 是 AnalyticDB MySQL 版数据管理的最高层级。通过 Catalog,您可以在同一实例中统一管理内部存储数据、外部数据湖(Hive、Iceberg、Delta、Paimon)以及兼容 MySQL 协议的外部数据库(RDS MySQL、StarRocks 等),实现跨源元数据治理与联邦查询,无需数据搬迁即可构建湖仓一体架构。
Catalog 分类
根据元数据存储位置不同,AnalyticDB MySQL 的 Catalog 分为以下两类:
类别 | 名称 | 元数据存储位置 | 典型使用场景 |
Managed Catalog |
| AnalyticDB MySQL 内置元数据服务(高可用分布式存储)。 | 管理实例内部 OLAP 表(实时/批量写入),以及通过 |
External Catalog | 用户自定义名称(例如 | 外部元数据服务(Hive Metastore、阿里云 DLF、Paimon FileSystem、目标 MySQL 实例本身等)。 | 直接查询 Hive / Iceberg / Delta / Paimon 数据湖表,或联邦查询 RDS MySQL / StarRocks / 另一 AnalyticDB MySQL 实例。 |
如何选择
使用场景 | 推荐方案 | 说明 |
查询和管理 AnalyticDB MySQL 内部表 | 内置 Catalog | |
查询 Hive、Iceberg、Delta、Paimon 等数据湖 | External Catalog(数据湖类型) | 零 ETL 直接查询外部数据湖,支持查询与部分写入操作。 |
联邦查询 RDS MySQL、StarRocks 等外部数据库 | External Catalog(MySQL 类型) | 通过 JDBC 协议直连,仅支持查询。 |
基础操作
查看 Catalog
通过 SHOW CATALOGS 列出当前实例的所有 Catalog:
SHOW CATALOGS;返回结果包含三列:Catalog(名称)、Type(取值为 Managed Catalog 或 External Catalog)、Comment(说明)。新创建的实例只有一个 adb。
查看 Catalog 下的数据库和表:
-- 列出 Catalog 下的数据库
SHOW DATABASES FROM <catalog_name>;
-- 列出数据库下的表
SHOW TABLES FROM <catalog_name>.<db_name>;切换 Catalog
使用 SET CATALOG 切换当前会话生效的 Catalog:
SET CATALOG <catalog_name>;
-- 示例:切换到默认 Managed Catalog
SET CATALOG adb;使用 USE 同时切换 Catalog 和 Database:
USE <catalog_name>.<database_name>;
-- 示例:切换到 paimon_catalog 下的 paimon_db
USE paimon_catalog.paimon_db;
-- 切换回内部库 db1
USE adb.db1;通过 JDBC 指定 Catalog
使用 JDBC 连接 AnalyticDB MySQL 时,可在连接串中直接指定 Catalog。连接建立后会话即在该 Catalog 下:
jdbc:mysql://<host>:<port>/[catalog_name.]database_name未指定 catalog_name 时默认为 adb。
跨 Catalog 查询数据
无论当前会话在哪个 Catalog 下,都可以通过三段式 <catalog>.<database>.<table> 引用其他 Catalog 中的对象,实现联邦查询。
以下示例在 adb.adb_db 下查询 paimon_catalog 中的 paimon_table。
SELECT * FROM paimon_catalog.paimon_db.paimon_table;联邦关联两个 Catalog 中的表:
SELECT *
FROM paimon_catalog.paimon_db.paimon_table h
JOIN adb.adb_db.adb_table o
ON h.id = o.id;相关文档
Managed Catalog:管理 AnalyticDB MySQL 实例内部数据。
External Catalog:接入 Hive、Iceberg、Delta、Paimon、MySQL 等外部数据源。