Catalog 概述

更新时间:
复制 MD 格式

Catalog 是 AnalyticDB MySQL 版数据管理的最高层级。通过 Catalog,您可以在同一实例中统一管理内部存储数据、外部数据湖(Hive、Iceberg、Delta、Paimon)以及兼容 MySQL 协议的外部数据库(RDS MySQL、StarRocks 等),实现跨源元数据治理与联邦查询,无需数据搬迁即可构建湖仓一体架构。

image

Catalog 分类

根据元数据存储位置不同,AnalyticDB MySQL 的 Catalog 分为以下两类:

类别

名称

元数据存储位置

典型使用场景

Managed Catalog

adb(系统内置,每个实例有且仅有一个,固定名称,不可修改)。

AnalyticDB MySQL 内置元数据服务(高可用分布式存储)。

管理实例内部 OLAP 表(实时/批量写入),以及通过 CREATE EXTERNAL DATABASE 创建的外库和通过 CREATE EXTERNAL TABLE 映射的逻辑外表。

External Catalog

用户自定义名称(例如 paimon_ossiceberg_prodmysql_sales),数量不限,可按需创建和删除。

外部元数据服务(Hive Metastore、阿里云 DLF、Paimon FileSystem、目标 MySQL 实例本身等)。

直接查询 Hive / Iceberg / Delta / Paimon 数据湖表,或联邦查询 RDS MySQL / StarRocks / 另一 AnalyticDB MySQL 实例。

如何选择

使用场景

推荐方案

说明

查询和管理 AnalyticDB MySQL 内部表

Managed Catalog

内置 Catalog adb,无需额外配置。

查询 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;

相关文档