数据库开发者工具桌面应用CLIMCP 服务AI 应用【免费下载链接】dbx15MB轻量级跨平台数据库客户端、数据库管理工具。支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server 等。15MB, lightweight, cross-platform database client. Supports MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server and more.项目地址https://gitcode.com/t8y2/dbx点击查看免费下载本指南以 crates/README.md 为主线结合 crates/ARCHITECTURE.md、仓库根 Cargo.toml 以及各 crate 的源码与配置系统讲解 DBX 的 Rust 模块化工程结构。读完本文你将掌握 DBX 中 12 个 crate 各自的职责与所有权边界、从桌面/Web/CLI/MCP 到 dbx-core 再到底层 crate 的依赖方向、旧 API 的兼容策略、feature 组合规则以及一套可复制的模块化验证命令能够快速定位功能实现归属并参与该工作区的开发与排障。crates 目录的定位DBX 的 Rust 模块化工作区DBX 是一个以 Rust 为核心的跨平台数据库客户端其全部 Rust 代码以 Cargo workspace 形式组织在仓库的crates/目录下。仓库根 Cargo.toml 声明了 workspace 成员[workspace] resolver 2 members [src-tauri, crates/dbx-core, crates/dbx-drivers, crates/dbx-sql, crates/dbx-plugin-runtime, crates/dbx-formats, crates/dbx-types, crates/dbx-platform, crates/dbx-ai-provider, crates/dbx-web, crates/dbx-mcp, crates/dbx-cli, crates/dbx-sqlite-worker]其中src-tauri是 Tauri 桌面壳其余 12 个 crate 全部位于crates/下。这种组织方式的核心动机是把原来集中在单一巨型dbx-core里的能力按依赖方向拆开使每一层都可以被独立检查、独立测试、独立复用——例如只消费数据格式能力的工具不必拖入数据库驱动只消费类型契约的 crate 不必引入应用状态。如 crates/ARCHITECTURE.md 所强调依赖边界清晰、实现所有权明确、回归范围可控是拆分带来的直接收益而编译时间、内存与运行速度的提升属于需要同环境 benchmark 才能下结论的假设不应仅凭目录拆分推断。十二个 crate 的职责全景crates/README.md 给出了每个 crate 的一句话定位本节将其逐一展开并结合源码与配置补充实现细节。dbx-core应用编排层application orchestration: connections, queries, schema operations, data workflows, AI tools, administration, persistence, safety, and host services.dbx-core是桌面、Web、CLI、MCP 四个消费者共同依赖的编排核心。从 crates/dbx-core/src/lib.rs 可以看到它只保留了自己的业务子模块pub mod admin; pub mod ai; pub mod data; pub mod host; pub mod persistence; pub mod safety; pub mod connection; pub mod query; pub mod schema;其内部业务目录见 crates/ARCHITECTURE.md划分如下目录承载能力connection/连接路由、凭据、运行配置、JDBC 配置、任务监督query/查询编排、取消、文档/Redis/HBase 操作、事务与对象缓存schema/元数据编排、运行时 SQLite 表重建data/导入导出、迁移、比较、备份、文档与脚本工作流ai/数据库 Agent 循环、工具、解释、模板与 MCP 策略admin/Nacos、Consul、MQ、MQTTpersistence/本地存储、历史、保存的 SQL、配置与云同步safety/生产安全、写入解锁和风险指标host/更新、变更日志和外部应用集成db/驱动兼容导出与 Cloudflare D1 业务接口覆盖值得注意的是dbx-core并不重复实现底层能力而是通过大量重导出把底层 crate 的能力聚合到自己的公共 API 上。例如 crates/dbx-core/src/lib.rs 中的pub use dbx_sql::sql;、pub use dbx_sql::sql_analysis;、pub use dbx_sql::sql_diagnostics;、pub use dbx_sql::sql_risk;以及第 43 行pub use dbx_types::database_manifest;、第 60 行pub use dbx_plugin_runtime::plugins;。这样上层消费者只需use dbx_core::...即可同时实现本身归属于真正的 owner crate。dbx-types共享契约与序列化shared connection, query, metadata, and serialization contracts; generated database identities.dbx-types是依赖树的底层拥有连接配置、数据库身份、查询与元数据 DTO、JS 安全 JSON、MQTT/GridFS 数据记录等实现见 crates/ARCHITECTURE.md 所有权表。其源码目录包含 database_manifest.rs、document.rs、json.rs、mqtt.rs、models/、types.rs 等文件贯穿连接配置ConnectionConfig、DatabaseType被 dbx-cli 直接引用到查询结果QueryResult、ColumnInfo的各类 DTO。一个值得注意的边界约束是dbx-types不应引入连接池、应用状态或驱动 SDK。另外dbx-types/build.rs会消费plugins/connection-types/目录生成数据库身份枚举因此修改连接类型清单后需要重新构建该 crate。dbx-sqlSQL 解析与生成SQL parsing, dialects, analysis, risk classification, DDL/DML generation, and schema diff planning.dbx-sql承担与SQL 文本相关的纯业务逻辑源码目录crates/dbx-sql/src/包含解析与方言sql_parser/、sql_dialect/方言注册与加载、sql_analysis.rs、sql_diagnostics.rs、sql_error_position.rs风险与可编辑性sql_risk.rs风险分类、sql_editability.rs、sqlserver_temporal.rsSQL 生成ddl/DML相关dml_binding.rs、dml_preview_sql.rs、mysql_ddl_normalize.rs、mysql_event_sql.rs、db_admin_sql.rs、object_source_sql.rsschema diffschema_diff.rs与schema_diff/目录面向数据网格的 SQLdata_grid_sql.rs、data_grid_extractors/、data_grid_iotdb_sql.rs、data_grid_tdengine_sql.rs、data_grid_neo4j_sql.rsdbx-sql的边界是不执行数据库业务但它包含方言文件的加载与监听dbx-sql/build.rs消费plugins/dialects/因此并非完全无 I/O 的纯函数库——这是文档中明确承认的例外。它的核心价值可以在 CLI 中找到例证dbx query在执行前调用classify_sql_risk_for_database对语句做风险分类配合production_safety判定是否阻断写入见 crates/dbx-cli/src/main.rs。dbx-drivers原生数据库适配与 Agent 运行时native database adapters, database Agents, tunnels, execution budgets, and driver lifecycle.dbx-drivers拥有原生驱动、隧道、JDBC/Agent 运行与分发、超时取消、SQLite 元数据读取等实现crates/ARCHITECTURE.md。其源码目录crates/dbx-drivers/src/清晰地反映了职责分布Agent 体系agent_catalog.rs、agent_connection.rs、agent_manager.rs、agent_runtime.rs、agent_service.rs、agent_recovery.rs、agent_offline_export.rs执行与元数据execution.rs、metadata.rs、runtime_config.rs隧道与认证ssh_config.rs、mongo_oidc.rs、mongo_shell.rs、database_capabilities.rs结合仓库根 Cargo.toml 的[patch.crates-io]段可见DBX 对多个上游数据库 crate 做了本地定制如 rumqttc 增加 MQTT 3.1 CONNECT 编码、tiberius 修复 SQL Server 结果集 UTF-16 代理项、tokio-postgres 系列来自 GaussDB 分支等这些补丁都属于驱动层的工程细节进一步说明dbx-drivers是数据库生态适配的前线。dbx-formats数据格式化与文件编码data formatting and file encoders, independent of database connections.dbx-formats提供 CSV/XLSX/文本/时间格式与 ZIP 编码与数据库连接完全解耦。数据库查询驱动的 CSV 导出编排保留在 coreCSV 编码本身则位于 formatscrates/ARCHITECTURE.md。从 crates/dbx-core/src/lib.rs 可以看到 core 对 formats 的重导出csv_export、export_split_zip、sql_file_zip_package、temporal_format、text_export、xlsx_export。dbx-ai-providerAI 供应商客户端AI provider clients, CLI adapters, streaming, and token usage.dbx-ai-provider拥有模型与 CLI 适配器、流式协议、事件和 token 用量实现但不包含数据库工具执行和 Agent 业务循环后者在 core 的ai/目录。从 crates/dbx-core/src/lib.rs 的重导出可以看到它支持的 CLI Agent 适配器ai_claude_code_cli、ai_codebuddy_cli、ai_codex_cli、ai_cursor_cli、ai_grok_cli、ai_opencode_cli、ai_pi_agent_cli、ai_qoder_cli、agent_events、token_usage等。Pi MCP bridge 也随 AI provider 提供。dbx-plugin-runtime插件包与子进程运行时plugin packages, signatures, marketplace, subprocess sessions, and host requests.dbx-plugin-runtime拥有 manifest、签名与安装、Marketplace、子进程会话及 host 请求等实现crates/dbx-core/src/lib.rs 中的pub use dbx_plugin_runtime::plugins;。它的边界是不包含数据库驱动实现和 core 应用状态。其源码目录 crates/dbx-plugin-runtime/src/plugins/ 承载插件相关实现与仓库根plugins/目录连接类型、方言、SDK、manifest schema互为印证——插件生态的协议解析与运行时执行都在此 crate。dbx-platform进程/路径/网络原语shared process, path, proxy, download, version, and host-prompt primitives.dbx-platform提供进程、路径、代理、下载、版本比较与共享用户提示网关等跨 crate 通用原语。core 在 Cargo.toml 中以features [host-prompts, downloads]显式启用这些能力避免只使用类型或纯格式的消费者意外加载驱动或应用层crates/ARCHITECTURE.md。例如下载能力体现在 crates/dbx-core/src/lib.rs 重导出的race_download、download_candidate_urls、DownloadSource以及GITHUB_RELEASE_DOWNLOAD_PREFIX、R2_CDN_BASE等常量。dbx-webDocker/Web 后端服务the Docker/web backend service binary published asdbx-web.dbx-web是发布名为dbx-web的 Web 后端可执行文件版本为 0.6.17见 crates/dbx-web/Cargo.toml。它的启动流程crates/dbx-web/src/main.rs展示了上层消费者如何装配底层 crate初始化 rustls 加密提供者打开数据目录下的dbx.db存储Storage::open并迁移旧 JSON 数据注册核心方言并扫描plugins/dialects目录加载插件方言随后启动方言 YAML 热重载监听DialectHotReload::run_forever用AppState::new_with_plugin_and_agent_dir_and_app_version组装核心应用状态。该服务还暴露了大量业务路由连接、查询、Redis、MongoDB、etcd、Consul、Nacos、MQ、插件、JDBC、Agent 管理等并支持若干环境变量DBX_DATA_DIR数据目录默认~/.dbx-web、DBX_PASSWORD/DBX_DISABLE_PASSWORD密码认证优先于数据库、DBX_PUBLIC_BASE_PATH反向代理子路径、DBX_WEB_MCP_TOKEN/DBX_WEB_MCP_TOKEN_FILE/DBX_WEB_MCP_ALLOWED_HOSTS可选的内置 Web MCP 端点默认关闭。dbx-cli命令行应用the command-line application.dbx-cli是与桌面、Web 共享同一套 core 能力的命令行入口。其 usage 文本 定义了完整的子命令面dbx doctor [--json] dbx capabilities [--json] dbx connections list [--json] dbx schema list connection [--schema name] [--json] dbx schema describe connection table [--schema name] [--json] dbx query connection sql [--file path] [--limit n] [--timeout 10s] [--allow-writes] [--allow-dangerous-sql] [--json] dbx context connection [--schema name] [--tables a,b] [--max-tables n] [--json] dbx dbml connection [--out path] [--notes path] [--schema name] [--database name] [--tables a,b] dbx docs connection [--out path] [--notes path] [--lang code] [--schema name] [--database name] [--tables a,b] dbx open connection table [--schema name] [--database name] [--json]从实现看crates/dbx-cli/src/main.rsCLI 有双后端模式设置DBX_WEB_URL时作为 Web 后端客户端WebBackend否则直接打开本地存储LocalBackend。它还内置了两类执行模式清单DIRECT_QUERY_TYPES如 postgres、mysql、sqlite、doris 等可直接查询的类型crates/dbx-cli/src/main.rs与BRIDGE_REQUIRED_TYPES如 oracle、sqlserver、mongo、redis、duckdb 等需要桌面桥接的类型crates/dbx-cli/src/main.rs可通过dbx capabilities输出。此外CLI 复用了 core 的安全链dbx query会对 SQL 做风险分类sql_risk并在目标为生产库production_safety时阻断写入与 DDL。dbx-mcpMCP 服务库与二进制the MCP service library and binary.dbx-mcp是基于 rmcp 2.2.0 构建的 MCP 服务版本 0.4.91见 crates/dbx-mcp/Cargo.toml。其源码结构crates/dbx-mcp/src/包含backend.rsDbxBackend/LocalBackend/WebBackend抽象、server.rs、transport.rs、http.rs/http_auth.rs、session.rs、runtime.rs、paths.rs、diagnostics.rs。CLI 与 Web 均复用了它的LocalBackend/WebBackend抽象dbx-web还可在显式配置 token 后挂载基于 Streamable HTTP 的 MCP 端点crates/dbx-web/src/main.rs。dbx-sqlite-worker隔离的 SQLite 文件宿主the isolated SQLite file-host worker and protocol.dbx-sqlite-worker提供隔离的 SQLite 文件宿主进程及其通信协议。在依赖图中它被dbx-drivers以协议层方式引用不携带运行时默认值用于把 SQLite 文件的读写与主进程隔离属于架构图最底层的基础设施 crate。依赖方向单向分层禁止反向依赖crates/ARCHITECTURE.md 给出了权威的依赖关系图整理为desktop / web / cli / mcp │ dbx-core ├── dbx-drivers ── dbx-sql ── dbx-types │ ├── dbx-types │ ├── dbx-platform │ └── dbx-sqlite-worker (protocol, no runtime defaults) ├── dbx-plugin-runtime ── dbx-types dbx-platform ├── dbx-ai-provider ── dbx-platform ├── dbx-formats ├── dbx-sql / dbx-types └── dbx-platform关键约束是下层 crate 不得反向依赖 core包括 build 依赖和 dev 依赖。例如dbx-sql可以依赖dbx-types但不能依赖dbx-core。这保证了任何底层 crate 都可以被独立编译、独立测试。实现所有权谁拥有什么不应引入什么为杜绝层层加码的隐性耦合架构文档用一张所有权表crates/ARCHITECTURE.md明确了每个 crate 的拥有物与禁区Crate拥有的实现不应引入dbx-types连接配置、数据库身份、查询与元数据 DTO、JS 安全 JSON、MQTT/GridFS 数据记录连接池、应用状态、驱动 SDKdbx-sql解析、方言注册与加载、SQL 风险、DDL/DML、结构差异计划查询执行、凭据、core 业务dbx-drivers原生驱动、隧道、JDBC/Agent 运行与分发、超时取消、SQLite 元数据读取导入/迁移编排、应用配置持久化dbx-formatsCSV/XLSX/文本/时间格式与 ZIP 编码数据库请求、连接管理dbx-ai-provider模型与 CLI 适配器、流式协议、事件和 token 用量数据库工具执行和 Agent 业务循环dbx-plugin-runtimemanifest、签名与安装、Marketplace、子进程会话及 host 请求数据库驱动实现、core 应用状态dbx-platform进程、路径、代理、下载、版本比较与共享用户提示网关数据库身份和业务规则这套所有权划分的意义在于当某个功能出现缺陷时可以通过归属表快速定位修复层同时避免测试为迁就依赖而把数据库连接引入 SQL、类型或格式 crate。兼容性旧路径重导出与类型身份拆分模块化最大的风险是破坏既有调用方。架构文档crates/ARCHITECTURE.md给出了四条兼容承诺原有dbx_core::models、dbx_core::types、dbx_core::db、dbx_core::sql*、dbx_core::ai、dbx_core::plugins及业务模块路径继续通过重导出可用同一 DTO、连接池、提示请求和插件类型不复制定义旧路径与新 crate 具有相同类型身份——public_api_compatibility测试专门覆盖这些跨层身份协议、序列化字段、默认配置、数据库语义、安装目录与进程生命周期不因搬迁而改变原测试随实现迁移跨层测试移入 core 集成测试目录test-support仅提供 stub/测试钩子由 dev-dependency 启用不进入生产依赖。一个容易被忽略的兼容细节是日志 target 变化模块路径迁移后RUST_LOGdbx_coredebug不再覆盖新 crate需要补充dbx_driversdebug,dbx_sqldebug,dbx_plugin_runtimedebug,dbx_ai_providerdebug,dbx_platformdebug等目标。默认桌面日志级别及 Web 默认过滤策略保持不变。Features 与构建资源dbx-core保留了原来的 default feature 集合crates/dbx-core/Cargo.tomldefault [duckdb-sidecar, dynamodb, mq-admin, sqlite-sqlcipher, system-fonts] duckdb-sidecar [dbx-sql/duckdb-sidecar, dbx-drivers/duckdb-sidecar] dynamodb [dbx-drivers/dynamodb] mq-admin [dep:rumqttc, dbx-types/mq-admin, dbx-drivers/mq-admin] sqlite-sqlcipher [rusqlite/bundled-sqlcipher-vendored-openssl, dbx-drivers/sqlite-sqlcipher] sqlite-multiple-ciphers [dbx-drivers/sqlite-multiple-ciphers] sqlite-bundled [rusqlite/bundled, dbx-drivers/sqlite-bundled] openapi [dbx-types/openapi, dbx-sql/openapi] system-fonts [font-kit]使用时有几个要点core 会向实际实现 crate转发duckdb-sidecar、dynamodb、mq-admin、openapi与 SQLite 能力sqlite-bundled、sqlite-sqlcipher、sqlite-multiple-ciphers是互斥的 SQLite 后端选择不要把--all-features当作合法组合测试的替代品例如dbx-mcp使用sqlite-bundled见 crates/dbx-mcp/Cargo.toml而dbx-web与 core 默认走sqlite-sqlcipher。构建资源方面dbx-types/build.rs消费plugins/connection-types/dbx-sql/build.rs消费plugins/dialects/数据库文档导出的 JS/CSS 仍位于dbx-core/assets/由pnpm build:docs-export生成Docker 的依赖缓存阶段必须包含所有 workspace manifest 与 stub实际构建阶段必须包含方言与连接类型目录Nix 则保留整个仓库源码输入。验证架构守卫与测试矩阵模块化拆分必须有可自动执行的验证手段。架构文档crates/ARCHITECTURE.md给出如下验证命令pnpm test:architecture cargo check -p dbx-core --no-default-features --all-targets env -u DOCKER_CONTEXT \ DOCKER_HOSTunix:///tmp/dbx-disabled-docker.sock \ RUST_MIN_STACK33554432 \ cargo test -p dbx-core -p dbx-drivers -p dbx-sql \ -p dbx-types -p dbx-formats -p dbx-platform \ -p dbx-ai-provider -p dbx-plugin-runtime \ --no-default-features --features dbx-core/sqlite-bundled --lib cargo test -p dbx-core --no-default-features --features sqlite-bundled \ --test public_api_compatibility --test connection_url_compatibility \ --test agent_recovery_contract要点解读scripts/core-architecture.test.mjs是架构守卫校验 workspace 依赖、功能转发、源码归属、构建输入和前端测试引用路径CI 的 Rust 检查会执行它本机测试不启动数据库/引擎或 Docker 实例单元测试包含内存 SQLite 与本地协议模拟器真实数据库验证复用 SSH 测试服务器上的专用测试实例通过 SSH 隧道访问Linux 的文件权限回归测试应由非 root 用户执行root 会绕过目录写权限使测试前提失效测试进程的代理应排除 localhost避免本地 HTTP 模拟器请求被转发#[ignore]的 live 测试需要其声明的测试环境变量未运行的 live 用例不算通过交付验证还应覆盖桌面/Web/CLI/MCP 消费者、合法 feature 组合、前端类型与源码契约、Agent 安装/恢复以及远程数据库的查询/元数据/导入导出。从消费者视角看分层价值四个消费者对 core 的复用方式各不相同恰好印证了分层的价值桌面src-tauri最完整的编排能力使用者覆盖连接、查询、schema、导入导出、AI、管理、持久化与安全全链路Webdbx-web以dbx-web二进制形态发布在 core 之上叠加 HTTP 路由、会话与认证并复用dbx-mcp的 backend 抽象提供可选 MCP 端点CLIdbx-cli复用dbx-mcp的LocalBackend/WebBackend抽象在 core 的安全链SQL 风险分类 生产库保护之上提供脚本化能力MCPdbx-mcp作为服务库同时被 CLI 与 Web 复用是连接AI 消费方与数据库能力的协议层。无论从哪个入口进入底层实现都落在同一个dbx-core编排层及其下层 crate 中这正是 crates/README.md 所概括的Rust crates for DBX的工程价值单一实现、多点复用、边界可控。进一步了解依赖规则、兼容导出、feature 选择与验证命令可继续阅读 crates/ARCHITECTURE.md。赞分享数据库开发者工具桌面应用CLIMCP 服务AI 应用【免费下载链接】dbx15MB轻量级跨平台数据库客户端、数据库管理工具。支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server 等。15MB, lightweight, cross-platform database client. Supports MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server and more.项目地址https://gitcode.com/t8y2/dbx点击查看免费下载相关推荐深入 DBX 的 Rust 工作区架构从 crates 模块边界到构建与验证实践深入 DBX 的 Rust 工作区架构从 crates 模块边界到构建与验证实践 导读 DBX轻量级跨平台数据库客户端支持 90 数据库在 crate数据库客户端数据库桌面应用CLI后端MCP 服务AI 应用DBX Rust 工作区模块边界架构解析dbx-core 编排层与九大底层 Crate 的依赖治理实践DBX Rust 工作区模块边界架构解析dbx core 编排层与九大底层 Crate 的依赖治理实践 DBX 是一个轻量级跨平台数据库客户端覆盖 MySQ数据库客户端数据库桌面应用CLI后端MCP 服务AI 应用OpenObserve API 层架构解析7 个 API crate 的职责划分、依赖规则与组合根设计OpenObserve API 层架构解析7 个 API crate 的职责划分、依赖规则与组合根设计 OpenObserve 是采用 Rust 编写的可观测可观测性日志分析指标监控链路追踪后端云原生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考