本文介绍LakeBase Catalog的安装启用、通用SQL语法、权限管理和运维配置。各类型Catalog的创建选项和示例,请参见对应的操作指南。
安装与启用
LakeBase Catalog模块内置于polar_csi扩展,无需单独安装。执行以下SQL启用该功能:
-- 会话级打开
SET polar_csi.enable_lakebase = on;
-- 会话级关闭
SET polar_csi.enable_lakebase = off;
-- 全局打开(无需重启)
ALTER SYSTEM SET polar_csi.enable_lakebase = on;
SELECT pg_reload_conf();
-- 全局关闭(无需重启)
ALTER SYSTEM SET polar_csi.enable_lakebase = off;
SELECT pg_reload_conf();快速开始
以下示例展示LakeBase Catalog的基本使用流程:
-- 创建 Lance catalog
CREATE CATALOG demo TYPE lance OPTIONS (
dbname 'oss://bucket/lance_ns',
oss_endpoint 'oss-cn-hangzhou.aliyuncs.com',
oss_access_key_id 'AK_EXAMPLE_ID',
oss_access_key_secret 'AK_EXAMPLE_SECRET'
);
-- 创建表并写入数据
CREATE TABLE demo.main.users (id INT, name TEXT, age INT);
INSERT INTO demo.main.users VALUES (1, '张三', 28), (2, '李四', 35);
-- 查询
SELECT * FROM demo.main.users WHERE age > 30;
-- 清理
DROP TABLE demo.main.users;
DROP CATALOG demo;通过catalog.schema.table三段名即可访问对应格式的表数据。
支持的Catalog类型
类型 | 说明 | 操作指南 |
| Lance向量数据湖,适用于AI/ML向量检索场景 | |
| Apache Paimon流批一体数据湖 | |
| 本地PostgreSQL表,适用于跨库查询和联合查询 | |
| DuckDB本地分析引擎,适用于OLAP分析场景 |
通用SQL语法
CREATE CATALOG
CREATE [ OR REPLACE ] CATALOG [ IF NOT EXISTS ] catalog_name
TYPE { lance | paimon | postgres | duckdb }
[ OPTIONS ( option_name 'option_value' [, ...] ) ];参数 | 说明 |
| Catalog 名称。未加引号时自动折叠为小写,遵循 PostgreSQL 标识符规则。 |
| Catalog 类型。支持 |
| 可选的键值对配置,用于传递特定参数。各类型Catalog的OPTIONS参数不同,请参见对应的操作指南。 |
| Catalog已存在时跳过,不报错。 |
| Catalog已存在时替换。 |
DROP CATALOG
删除Catalog元数据。底层存储文件不会被删除。如果当前会话已将该Catalog设置为默认Catalog,DROP会拒绝执行(错误码ERRCODE_OBJECT_IN_USE),需先执行RESET CATALOG。
DROP CATALOG [ IF EXISTS ] catalog_name;ALTER CATALOG
语法
ALTER CATALOG catalog_name RENAME TO new_name; ALTER CATALOG catalog_name OWNER TO new_owner;权限要求:Catalog owner或高权限用户。
行为说明
RENAME:将Catalog重命名为
new_name。目标名称不能是保留名称(如pg_catalog),也不能与当前数据库名冲突,且不能与已有 Catalog 重名。OWNER TO:将Catalog的所有者变更为
new_owner。变更时会同步更新Catalog上已有的数据访问权限(ACL)条目,将旧 owner 的权限映射到新 owner。如果新 owner 与当前 owner 相同,则为空操作。
查看Catalog信息
SHOW CATALOGS
语法
SHOW CATALOGS;输出结果说明
列名
说明
catalog_nameCatalog名称
catalog_type类型(
lance、paimon、postgres、duckdb)uri当前数据库名
comment注释
DESCRIBE CATALOG
显示Catalog的详细属性。当数据访问权限(ACL)列为空(即从未执行过 GRANT)时,会显示为 (owner only)。
语法
DESCRIBE CATALOG catalog_name; DESC CATALOG catalog_name; -- 等价简写输出结果说明
属性
说明
catalog_nameCatalog名称
catalog_type类型(
lance、paimon、postgres、duckdb)comment注释
options创建时指定的 OPTIONS,以 JSON 格式展示(无 OPTIONS 时为空)
acl权限列表
示例
property | value --------------+------------------------ catalog_name | lance_local catalog_type | lance comment | options | {"dbname": "lance_ns"} acl | (owner only) (5 rows)
SHOW CREATE CATALOG
输出可重新执行的 CREATE CATALOG DDL 语句,包含 TYPE 和 OPTIONS 信息。
SHOW CREATE CATALOG catalog_name;输出结果中不会明文显示敏感加密的信息,例如AccessKey、AccessKeySecret以及password等信息。
COMMENT ON CATALOG
权限要求:Catalog owner或高权限用户。
COMMENT ON CATALOG catalog_name IS '描述文字';
COMMENT ON CATALOG catalog_name IS NULL; -- 清除注释Schema和Table管理
SCHEMA
语法
CREATE SCHEMA [ IF NOT EXISTS ] catalog_name.schema_name; DROP SCHEMA [ IF EXISTS ] catalog_name.schema_name [ CASCADE | RESTRICT ];示例
CREATE SCHEMA demo.analytics; SHOW SCHEMAS FROM demo; DROP SCHEMA demo.analytics;
TABLE
CREATE / DROP TABLE
CREATE TABLE catalog_name.schema_name.table_name ( column_def [, ...] ); DROP TABLE catalog_name.schema_name.table_name;column_def(列定义)使用 DuckDB 类型语法:
INT、BIGINT、DOUBLE、TEXT/VARCHAR、BOOLEAN、DATE、TIMESTAMP、DECIMAL(p,s)等。SHOW TABLES / DESCRIBE TABLE / SHOW CREATE TABLE
SHOW TABLES FROM catalog_name.schema_name; SHOW TABLES FROM catalog_name; DESCRIBE TABLE catalog_name.schema_name.table_name; DESC TABLE catalog_name.schema_name.table_name; SHOW CREATE TABLE catalog_name.schema_name.table_name;
USE / SET CATALOG / SWITCH / RESET
-- 设置默认 catalog(以下三种等价)
USE catalog_name;
SET CATALOG catalog_name;
SWITCH catalog_name;
-- 同时设置 catalog 和 schema
USE catalog_name.schema_name;
-- 设置默认 schema
SET SCHEMA schema_name;
-- 查看当前设置
SHOW CATALOG;
SHOW SCHEMA;
-- 重置
RESET CATALOG; -- 清除默认 catalog 和 schema
RESET SCHEMA; -- 仅清除默认 schema设置默认Catalog后,可使用二段名(schema.table)访问数据。
执行USE catalog_name后,PostgreSQL本地表将无法通过两段名访问。如需访问本地表,请写完整的三段名,或创建postgres类型的Catalog来访问。
GRANT / REVOKE ON CATALOG
权限要求:Catalog owner或高权限用户。
GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }
ON CATALOG catalog_name TO role_name [, ...];
REVOKE { USAGE | CREATE | ALL [ PRIVILEGES ] }
ON CATALOG catalog_name FROM role_name [, ...];
SHOW GRANTS ON CATALOG catalog_name;EXPLAIN
EXPLAIN SELECT * FROM demo.main.orders WHERE amount > 50;
EXPLAIN ANALYZE SELECT * FROM demo.main.orders;数据操作示例
DDL
Schema 管理
CREATE SCHEMA demo.analytics;
CREATE SCHEMA IF NOT EXISTS demo.analytics;
SHOW SCHEMAS FROM demo;
DROP SCHEMA demo.analytics;
DROP SCHEMA IF EXISTS demo.analytics CASCADE;Table 管理
CREATE TABLE demo.main.orders (
id INT,
customer VARCHAR,
amount DOUBLE,
order_ts TIMESTAMP
);
SHOW TABLES FROM demo.main;
DESCRIBE TABLE demo.main.orders;
SHOW CREATE TABLE demo.main.orders;
DROP TABLE demo.main.orders;DML
-- 插入
INSERT INTO demo.main.orders VALUES
(1, 'Alice', 99.50, '2026-01-15 10:00:00'),
(2, 'Bob', 250.00, '2026-02-20 14:30:00');
-- 查询
SELECT customer, amount FROM demo.main.orders WHERE amount > 100;
-- 更新
UPDATE demo.main.orders SET amount = 100.00 WHERE id = 1;
-- 删除
DELETE FROM demo.main.orders WHERE id = 2;
-- 聚合
SELECT count(*), sum(amount) FROM demo.main.orders;权限管理
Catalog 管理权限
操作 | 所需权限 |
| 高权限用户 |
| Catalog owner或高权限用户 |
| Catalog owner或高权限用户 |
| Catalog owner或高权限用户 |
Catalog owner为执行CREATE CATALOG的用户,自动记录。可通过ALTER CATALOG ... OWNER TO转移。
数据访问权限(ACL)
权限 | 允许的操作 |
| SELECT、INSERT、UPDATE、DELETE |
| CREATE/DROP TABLE、CREATE/DROP SCHEMA |
| USAGE + CREATE |
规则说明
新建Catalog默认所有非owner的普通用户被拒绝访问。
执行GRANT后ACL生效,未授权用户被拒绝。
REVOKE ALL后仅 owner 和高权限用户可访问。ACL 在三段名数据路径上强制执行(SELECT / DML / DDL 均检查)。
示例
CREATE ROLE analyst LOGIN;
CREATE CATALOG reports TYPE duckdb;
CREATE TABLE reports.main.sales (id INT, amount DOUBLE);
GRANT USAGE ON CATALOG reports TO analyst;
SET ROLE analyst;
SELECT * FROM reports.main.sales; -- OK
CREATE TABLE reports.main.tmp (x INT); -- ERROR: Requires CREATE privilege
RESET ROLE;
REVOKE USAGE ON CATALOG reports FROM analyst;
SET ROLE analyst;
SELECT * FROM reports.main.sales; -- ERROR: Requires USAGE privilege
RESET ROLE;
SHOW GRANTS ON CATALOG reports;运维配置
参数 | 默认值 | 说明 |
|
| 功能总开关 |
| 空 | 会话默认Catalog |
| 空 | 会话默认Schema |
|
| 元数据缓存条目上限 |
|
| 元数据缓存TTL(毫秒) |
|
| 含义同PostgreSQL的
|
已知限制
当前仅支持
lance、paimon、postgres、duckdb四种Catalog类型。暂不支持Extended Query协议,三段名查询不能通过PREPARE / EXECUTE执行。
不支持跨节点的读写一致性。