dbx/docs/content/docs/databases.cn.mdx

198 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 数据库支持
description: 了解 DBX 可以连接哪些数据库,以及每类高级功能支持哪些引擎。
---
<Callout type="info">DBX 主应用会尽量使用 Rust 原生驱动。部分数据库通过 MySQL 或 PostgreSQL 兼容协议连接,部分数据库通过 Agent 驱动或可选的 [JDBC 插件](/cn/docs/plugins) 扩展。</Callout>
## 连接类型
新建连接窗口会提供带默认端口和驱动标签的预设类型。
| 分组 | 类型 | 说明 |
| ------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| 核心 SQL 数据库 | MySQL、PostgreSQL、SQLite、DuckDB、ClickHouse、SQL Server、Oracle、Redshift、DM、GaussDB、KWDB、Teradata、Vertica、Exasol、Firebird、SAP HANA、崖山 YashanDB、GBase | 直接出现在 DBX 连接选择器中 |
| 文档、键值、向量与配置服务 | Redis、MongoDB、Elasticsearch、Qdrant、Milvus、Weaviate、ChromaDB、etcd、Apache ZooKeeper、Nacos | 根据数据模型使用专门浏览器、管理控制台或查询流程,不完全等同于关系型表格 |
| MySQL 兼容类型 | MariaDB、TiDB、OceanBase、Doris、SelectDB、StarRocks、Manticore Search、GoldenDB、TDSQL、PolarDB、GreatSQL、自定义 MySQL | 复用 MySQL 风格连接能力 |
| PostgreSQL 兼容类型 | openGauss、KingBase、HighGo、Vastbase、CockroachDB、自定义 PostgreSQL | 复用 PostgreSQL 风格连接能力 |
| 文件型数据库 | SQLite、DuckDB、Microsoft Access、RQLite、Turso | 选择本地数据库文件或 HTTP 端点,不填写主机和端口 |
| 时序与边缘数据库 | Cloudflare D1、InfluxDB、IoTDB、TDengine、Databend、QuestDB | 托管 SQLite、时序、IoT 或边缘场景 |
| 分析与消息服务 | Apache Spark、Dremio、Apache Pulsar、Apache Kafka、Apache RocketMQ、RabbitMQ | 用于分布式分析、消息和流管理场景 |
| Agent/JDBC 扩展类型 | H2、Snowflake、Trino、PrestoSQL、Hive、DB2、Informix、Neo4j、Cassandra、BigQuery、Kylin、SunDB、OSCAR、XuguDB、UXDB、Databricks、IRIS、JDBC | 功能覆盖取决于对应驱动路径 |
## 默认端口
| 类型 | 默认端口 |
| ------------------------------------------- | -------: |
| MySQL / MariaDB / GoldenDB / TDSQL / PolarDB / GreatSQL | 3306 |
| PostgreSQL / openGauss / GaussDB / Vastbase | 5432 |
| Redis | 6379 |
| MongoDB | 27017 |
| ClickHouse | 8123 |
| SQL Server | 1433 |
| Oracle | 1521 |
| Elasticsearch | 9200 |
| Qdrant | 6333 |
| Milvus | 19530 |
| Weaviate | 8080 |
| ChromaDB | 8000 |
| TiDB | 4000 |
| OceanBase | 2881 |
| Doris / SelectDB / StarRocks / Databend | 9030 |
| Manticore Search | 9306 |
| Redshift | 5439 |
| CockroachDB | 26257 |
| DM | 5236 |
| KingBase | 54321 |
| HighGo | 5866 |
| UXDB | 52025 |
| KWDB | 26257 |
| 崖山 YashanDB | 1688 |
| GBase | 5258 |
| Firebird | 3050 |
| Teradata | 1025 |
| Vertica | 5433 |
| Exasol | 8563 |
| SAP HANA | 39015 |
| Databricks | 443 |
| Cloudflare D1 REST API | 443 |
| InfluxDB | 8086 |
| IoTDB | 6667 |
| etcd | 2379 |
| Apache ZooKeeper | 2181 |
| Nacos | 8848 |
| Nacos 控制台/admin API | 8085 |
| IRIS | 1972 |
| RQLite | 4001 |
| H2 | 9092 |
| Snowflake | 443 |
| Trino | 8080 |
| PrestoSQL | 8080 |
| Hive | 10000 |
| Apache Spark | 10015 |
| DB2 | 50000 |
| Informix | 9088 |
| Dremio | 31010 |
| Neo4j | 7687 |
| Cassandra | 9042 |
| BigQuery | 443 |
| Kylin | 7070 |
| SunDB | 22000 |
| OSCAR | 2003 |
| TDengine | 6041 |
| XuguDB | 5138 |
| QuestDB | 8812 |
| Apache Pulsar Admin API | 8080 |
| Apache Kafka | 9092 |
| Apache RocketMQ NameServer | 9876 |
| RabbitMQ AMQP | 5672 |
<Callout type="info">SQLite、DuckDB、Access 和 JDBC 在不需要网络端口时,会在连接模型中保存为端口 `0`。</Callout>
## 本地数据库测试环境
DBX 为 ClickHouse、MariaDB、MongoDB、MySQL、PostgreSQL 和 Redis 维护了固定版本、可重复创建的 Docker Compose 配方。需要干净的本地实例验证连接、驱动行为或 Bug 修复时可以直接使用。命令、安全默认值和支持版本请参阅[数据库测试实验室](/cn/docs/database-lab)。
## 功能矩阵
DBX 只会在具备足够元数据和 SQL 生成能力的数据库上启用高级功能。
| 功能 | 支持类型 |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Schema 感知树 | PostgreSQL、SQL Server、Oracle、Redshift、DM、GaussDB、KWDB、KingBase、HighGo、UXDB、Vastbase、JDBC、H2、Snowflake、Trino、DB2、TDengine、XuguDB、Teradata、Vertica、Exasol、Firebird、SAP HANA、YashanDB、GBase |
| ER 图 | MySQL、PostgreSQL、SQLite、Cloudflare D1、SQL Server、Oracle、Redshift、DM、GaussDB、KWDB、KingBase、HighGo、UXDB、Vastbase、GoldenDB、Access、H2、DB2、Teradata、Vertica、Firebird、Exasol、GBase、YashanDB |
| 数据库搜索 | MySQL、PostgreSQL、SQLite、SQL Server、Oracle、Redshift、DuckDB、ClickHouse、DM、GaussDB、KWDB、KingBase、HighGo、UXDB、Vastbase、GoldenDB、Access、H2、Snowflake、Trino、Hive、DB2、Informix、Neo4j、Cassandra、BigQuery、Kylin、SunDB、TDengine、XuguDB、Databricks、Teradata、Vertica |
| 表数据导入 | MySQL、PostgreSQL、SQLite、Cloudflare D1、DuckDB、ClickHouse、SQL Server、Oracle、Doris、StarRocks、Redshift、DM、GaussDB、KWDB、KingBase、HighGo、UXDB、Vastbase、GoldenDB、Access、Databend |
| 几何字段地图预览 | PostgreSQL、HighGo、KingBase、Vastbase、openGauss、GaussDBPostGIS `geometry` / `geography` 列在结果集中以 WKT 显示,并提供网格工具栏的"地图预览"按钮) |
| 表结构编辑器 | MySQL、PostgreSQL、SQLite、SQL Server、KWDB、UXDB |
| 创建数据库 | MySQL、PostgreSQL、SQL Server、ClickHouse、Oracle、DM、GaussDB、KWDB、Doris、StarRocks、Redshift、Teradata、Vertica |
| 字段血缘 | MySQL、PostgreSQL、SQLite、Cloudflare D1、SQL Server、Oracle、Redshift、DM、GaussDB、KWDB |
| 数据传输 | MySQL、PostgreSQL、SQLite、Cloudflare D1、SQL Server、Oracle、ClickHouse、DuckDB、DM、GaussDB、KWDB |
| 不支持 SQL 文件执行 | Redis、MongoDB、Elasticsearch、etcd、Nacos |
<Callout type="warn">如果某个数据库可以连接,但没有出现在某个功能行中,该功能可能会被隐藏或受限。这是为了避免 DBX 生成无法可靠审查的 SQL。</Callout>
## 连接选项
大多数网络数据库支持主机、端口、用户名、密码、默认数据库、URL 参数、SSL、连接颜色和隧道/代理设置。文件型数据库会改为选择本地文件。
DBX 也可以解析常见连接 URL例如 MySQL、PostgreSQL、Redis、MongoDB、ClickHouse、SQL Server、Oracle、Elasticsearch、DM、GaussDB、KWDB、openGauss、TDengine、XuguDB、Access、Teradata、Vertica、Firebird、Exasol、GBase、YashanDB、SAP HANA、InfluxDB、QuestDB、IoTDB、etcd、Nacos、RQLite 和 Databricks。
### Cloudflare D1
新建 **Cloudflare D1** 连接时填写 Account ID、D1 Database IDUUID和 API Token。浏览元数据和查询至少需要 `D1 Read` 权限插入、更新、DDL、导入或传输还需要 `D1 Write` 权限。DBX 会直接调用 Cloudflare HTTPS API因此该类型不提供 SSH 或代理传输层。
### Nacos 控制台
Nacos 连接会打开专用管理控制台,用于管理命名空间、配置、服务、实例、配置历史和 Raw API 请求。创建连接时请填写 Nacos 控制台/admin API 地址。Nacos 3 Docker 部署通常使用 `8085` 暴露控制台;旧版本也可能与服务端口共用 `8848`。
### ClickHouse TLS
ClickHouse 连接支持 TLS 加密。创建 ClickHouse 连接时,启用 TLS 开关即可通过 HTTPS 而非 HTTP 进行连接。建议对生产环境的 ClickHouse 实例或 ClickHouse Cloud 部署启用此选项。
### GaussDB 原生驱动
GaussDB 和 openGauss 现在使用原生 Rust 驱动(`rust-gaussdb`)而非 ODBC。之前使用 PostgreSQL 兼容路径的连接会自动迁移到 GaussDB 驱动。原生驱动提供更好的类型处理和针对 GaussDB 的元数据支持。
### DuckDB 文件与内存模式
DuckDB 连接支持两种模式:
- **文件模式**:选择 `.db` 或 `.duckdb` 文件进行持久化存储
- **内存模式**:使用内存数据库进行临时分析。连接关闭后数据会丢失。
可以直接从连接表单创建新的 DuckDB 数据库文件,只需输入尚不存在的文件路径即可。
### DuckDB 连接初始化脚本
DuckDB 连接支持在每次建立连接后执行一段 SQL 脚本,在连接对话框的**初始化脚本**中配置。典型用途包括加载扩展、创建密钥、调整会话参数以及附加额外的数据目录:
```sql
INSTALL quack;
LOAD quack;
ATTACH 'quack:analytics-host' AS remote (TOKEN 'your_token');
```
也可以附加 [DuckLake](https://ducklake.select/) 数据目录:
```sql
INSTALL ducklake;
LOAD ducklake;
ATTACH 'ducklake:/data/lake/meta.ducklake' AS lake (DATA_PATH '/data/lake/files');
```
- 脚本中 ATTACH 的数据库本地文件、DuckLake、远程 Quack 服务等)会像配置的附加数据库一样显示在侧边栏,并在每次重连时自动重新附加。建议显式指定 `AS 别名`,保持目录名稳定。
- 语句按顺序执行;某条语句失败时连接会失败,并提示失败语句的序号和引擎报错,方便定位修改。
- 脚本在每次建立新连接时都会执行,请优先使用可重复执行的语句,并在引擎或扩展支持时使用 `IF NOT EXISTS` 等保护条件。
- 初始化脚本与连接密码同等对待:保存在本地密钥存储中,不会写入明文配置文件,云同步时只进入加密的敏感载荷——上例中 Quack 的 `TOKEN` 这类敏感内容不会出现在公开同步快照或导出里。
### SQLite 内存模式
SQLite 连接可以使用 `:memory:` 作为文件路径,创建临时的内存数据库。适用于快速实验或临时数据转换。
### Doris / StarRocks 多 Catalog
Doris 与 StarRocks 作为 MPP 引擎,通过 Catalog 联邦访问外部数据源(`SHOW CATALOGS`。DBX 会列出当前用户有权限读取的所有 Catalog并以 `Catalog → 数据库 → 表` 的树形结构展示:
- 内置的 `internal` Catalog 展示引擎自身的数据库与表。
- 外部 CatalogHive、Iceberg、Hudi、Paimon、JDBC 等)同样列出其数据库与表。无权限访问的 Catalog 会被静默跳过。
- 当只存在 `internal` Catalog 时,侧边栏保持扁平结构(不出现 Catalog 分组层),单 Catalog 部署不受影响。
从外部 Catalog 打开表时,数据预览使用三段式 `catalog.database.table` 名称,无需在会话中执行 `SWITCH`。外部 Catalog 仅支持表与视图——存储过程、序列、触发器、外键均不可用。
## 扩展支持
当目标数据库不在内置类型中,或团队必须使用厂商 JDBC 驱动时,可以使用 [JDBC 插件](/cn/docs/plugins)。JDBC 会把厂商驱动 JAR 放在 DBX 主应用之外,由你决定安装哪些驱动文件。
<Cards>
<Card title="创建连接" href="/cn/docs/getting-started">
安装 DBX、选择数据库类型并测试第一个连接。
</Card>
<Card title="JDBC 插件" href="/cn/docs/plugins">
安装可选 JDBC 插件并导入厂商驱动 JAR。
</Card>
<Card title="隧道/代理" href="/cn/docs/ssh-tunnel">
连接私有网络、跳板机、代理或 HTTP 隧道脚本后的数据库。
</Card>
</Cards>