AskTable

AskTable 数据源接入指南:支持 20+ 种数据库的统一接入方案

AskTable 团队
AskTable 团队 2026年3月8日

AskTable 支持 20+ 种数据源,包括关系型数据库、NoSQL、数据仓库、文件等。本文将全面介绍数据源的接入流程和最佳实践。


一、支持的数据源类型

1. 关系型数据库

MySQL 系列

PostgreSQL 系列

其他关系型

2. 数据仓库

云数据仓库

开源数据仓库

3. NoSQL 数据库

文档数据库

时序数据库

4. 文件数据源

表格文件

在线表格

5. 其他数据源

API 数据源

实时数据


二、数据源接入流程

1. 接入流程图

加载图表中...

2. 详细步骤

步骤 1:选择数据源类型

步骤 2:配置连接信息

步骤 3:测试连接

步骤 4:同步元数据

步骤 5:配置权限

步骤 6:开始使用


三、常见数据源配置

1. MySQL

连接信息

{
  "host": "mysql.example.com",
  "port": 3306,
  "database": "mydb",
  "username": "readonly_user",
  "password": "********"
}

高级配置

{
  "ssl": true,
  "charset": "utf8mb4",
  "timezone": "+08:00",
  "connect_timeout": 10
}

最佳实践

创建只读用户

-- 创建只读用户
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'password';

-- 授予只读权限
GRANT SELECT ON mydb.* TO 'readonly_user'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

2. PostgreSQL

连接信息

{
  "host": "postgres.example.com",
  "port": 5432,
  "database": "mydb",
  "username": "readonly_user",
  "password": "********",
  "schema": "public"
}

高级配置

{
  "ssl_mode": "require",
  "application_name": "asktable",
  "connect_timeout": 10
}

创建只读用户

-- 创建只读用户
CREATE USER readonly_user WITH PASSWORD 'password';

-- 授予连接权限
GRANT CONNECT ON DATABASE mydb TO readonly_user;

-- 授予 schema 使用权限
GRANT USAGE ON SCHEMA public TO readonly_user;

-- 授予表查询权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

-- 授予未来表的查询权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;

3. ClickHouse

连接信息

{
  "host": "clickhouse.example.com",
  "port": 8123,
  "database": "default",
  "username": "readonly_user",
  "password": "********",
  "protocol": "http"
}

高级配置

{
  "secure": true,
  "compression": true,
  "max_execution_time": 60
}

创建只读用户

-- 创建只读用户
CREATE USER readonly_user IDENTIFIED BY 'password';

-- 授予只读权限
GRANT SELECT ON default.* TO readonly_user;

4. Excel 文件

上传文件

  1. 选择"Excel"数据源类型
  2. 上传 Excel 文件
  3. 选择工作表
  4. 预览数据
  5. 确认导入

支持的格式

注意事项

5. 飞书多维表格

连接信息

{
  "app_id": "cli_xxxxx",
  "app_secret": "********",
  "app_token": "bascnxxxxx"
}

获取凭证

  1. 登录飞书开放平台
  2. 创建企业自建应用
  3. 获取 App ID 和 App Secret
  4. 获取多维表格的 App Token

权限配置


四、网络配置

1. 公网访问

场景:数据库有公网 IP

配置

{
  "host": "123.456.789.0",
  "port": 3306
}

安全建议

2. 内网访问

场景:数据库在内网,无公网 IP

方案 A:VPN

AskTable → VPN → 内网数据库

方案 B:SSH 隧道

{
  "host": "localhost",
  "port": 3306,
  "ssh_tunnel": {
    "host": "jump.example.com",
    "port": 22,
    "username": "tunnel_user",
    "private_key": "-----BEGIN RSA PRIVATE KEY-----\n..."
  }
}

方案 C:本地部署 AskTable

内网 AskTable → 内网数据库

3. 云服务商配置

AWS RDS

阿里云 RDS

腾讯云 TencentDB


五、元数据管理

1. 元数据同步

同步内容

同步策略

2. 表选择

选择策略

正则表达式过滤

包含:^(user|order|product).*
排除:.*(temp|test|backup).*

3. 字段描述

重要性

最佳实践

-- 添加表注释
COMMENT ON TABLE users IS '用户表';

-- 添加字段注释
COMMENT ON COLUMN users.id IS '用户ID';
COMMENT ON COLUMN users.name IS '用户姓名';
COMMENT ON COLUMN users.created_at IS '创建时间';

六、性能优化

1. 连接池配置

参数说明

推荐配置

{
  "pool": {
    "min_size": 2,
    "max_size": 10,
    "max_idle_time": 300,
    "connect_timeout": 10
  }
}

2. 查询优化

超时设置

{
  "query_timeout": 30,
  "max_rows": 10000
}

索引建议

3. 缓存策略

元数据缓存

查询结果缓存


七、故障排查

1. 连接失败

错误:无法连接到数据库

排查步骤

  1. 检查主机地址和端口
  2. 检查用户名和密码
  3. 检查网络连通性
  4. 检查防火墙规则
  5. 检查数据库是否运行

测试命令

# 测试网络连通性
ping mysql.example.com

# 测试端口
telnet mysql.example.com 3306

# 测试 MySQL 连接
mysql -h mysql.example.com -P 3306 -u username -p

2. 权限错误

错误:Access denied

排查步骤

  1. 检查用户名和密码
  2. 检查用户权限
  3. 检查主机访问限制

授权命令

-- 查看用户权限
SHOW GRANTS FOR 'username'@'%';

-- 授予权限
GRANT SELECT ON database.* TO 'username'@'%';

3. 元数据同步失败

错误:Failed to sync metadata

排查步骤

  1. 检查数据库连接
  2. 检查表是否存在
  3. 检查用户权限
  4. 查看错误日志

八、安全最佳实践

1. 账号安全

使用只读账号

密码安全

2. 网络安全

IP 白名单

允许的 IP:
- 123.456.789.0/24
- 234.567.890.0/24

SSL/TLS 加密

3. 审计日志

记录内容


九、总结

数据源接入的关键点:

选择合适的数据源: ✅ 根据业务需求选择 ✅ 考虑性能和成本 ✅ 评估安全性

正确配置连接: ✅ 使用只读账号 ✅ 启用 SSL 加密 ✅ 配置连接池

优化性能: ✅ 添加索引 ✅ 设置超时 ✅ 使用缓存

保障安全: ✅ IP 白名单 ✅ 强密码策略 ✅ 审计日志

下一步


相关阅读

技术交流