简体中文
Appearance
简体中文
Appearance
本文通过一个最小可运行示例,演示 创建 Catalog -> 访问外部表 -> 与本地表 Join 的完整链路,帮助你快速验证 Datalayers 联邦查询的基本能力。
dlsql 命令行工具使用 Docker 启动一个本地 MySQL 实例:
docker run -d --name dl-mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=demo \
-p 3306:3306 \
mysql:8.0进入容器,创建一张测试表并写入数据:
docker exec -it dl-mysql mysql -uroot -p123456 demoCREATE TABLE dict (
sid INT PRIMARY KEY,
name VARCHAR(64)
);
INSERT INTO dict (sid, name) VALUES (1, 'alice'), (2, 'bob'), (3, 'carol');dlsql -h 127.0.0.1 -P 8360 -u admin -p publicCREATE DATABASE fed_demo;
USE fed_demo;
CREATE TABLE sx1 (
ts TIMESTAMP(9),
sid INT32,
value FLOAT64,
TIMESTAMP KEY(ts)
) ENGINE=TimeSeries
PARTITION BY HASH(sid) PARTITIONS 1;写入几条本地数据:
INSERT INTO sx1 (ts, sid, value) VALUES
('2025-01-01T00:00:01Z', 1, 10.0),
('2025-01-01T00:00:02Z', 2, 20.0),
('2025-01-01T00:00:03Z', 3, 30.0);创建一个指向 MySQL 的 catalog:
CREATE CATALOG mysql WITH (
type=mysql,
addr='127.0.0.1:3306',
user='root',
password='123456',
db='demo'
);查看已创建的数据目录:
SHOW CATALOGS;
SHOW CREATE CATALOG mysql;直接通过三段式命名访问 MySQL 中的表:
SELECT * FROM mysql.demo.dict ORDER BY sid;将本地时序表与 MySQL 表进行关联:
SELECT s.ts, s.sid, d.name, s.value
FROM sx1 AS s
JOIN mysql.demo.dict AS d ON s.sid = d.sid
ORDER BY s.ts;修改 catalog 的连接选项,或重命名 catalog:
ALTER CATALOG mysql MODIFY OPTIONS pool_max=200;
ALTER CATALOG mysql RENAME TO mysql_demo;清理资源:
DROP CATALOG IF EXISTS mysql_demo;
DROP TABLE sx1;
DROP DATABASE fed_demo;docker rm -f dl-mysql