185 lines
7.6 KiB
Markdown
185 lines
7.6 KiB
Markdown
# dbtool-cli-v1 Database Support Matrix
|
||
|
||
日期:2026-03-26
|
||
作者:Product Manager
|
||
对应 issue:`CMP-21`
|
||
|
||
## 1. 决策摘要
|
||
|
||
- 当前项目不承诺“所有数据库的完整功能”,只承诺一个可验证的跨数据库核心操作闭环。
|
||
- 对本产品而言,“完整核心支持”指的是:用户可以稳定完成 `connect -> inspect -> query -> export`,并获得一致的安全边界、错误反馈和结果语义。
|
||
- PostgreSQL、MySQL、SQLite 都是当前项目的 **Tier A 目标数据库**,但只针对核心操作闭环,不延伸到数据库管理全家桶。
|
||
- 保存连接 profile、导入、migration、事务控制、存储过程 / function 管理、权限 / 用户管理、备份 / 恢复都不属于当前项目承诺。
|
||
- 下一批数据库只保留候选池,不进入当前项目承诺;是否进入下一阶段,取决于当前三库的 Tier A 质量是否稳定。
|
||
|
||
## 2. 支持等级定义
|
||
|
||
### Tier A:完整核心支持
|
||
|
||
- 属于当前项目明确承诺
|
||
- 必须进入 README、帮助文案、QA 验收和未来发布判断
|
||
- 必须在产品语义上跨数据库尽量一致
|
||
- 若存在数据库差异,必须明确记录且不破坏主流程
|
||
|
||
### Tier B:有限支持
|
||
|
||
- 不是当前版本必须交付的基线
|
||
- 只在下一阶段被明确立项后才进入承诺
|
||
- 可以先有数据库差异化设计,但不能反向定义当前版本范围
|
||
|
||
### Tier C:候选 / 实验 / 不承诺
|
||
|
||
- 当前项目不承诺交付
|
||
- 可以保留为研究方向、候选数据库或后续需求池
|
||
- 不进入当前版本完成标准
|
||
|
||
## 3. 产品语义:什么叫“完整功能”
|
||
|
||
本项目里的“完整功能”不是:
|
||
|
||
- 全量数据库管理功能
|
||
- 替代 DBeaver、DataGrip、pgAdmin、MySQL Workbench
|
||
- 覆盖 DBA 全工作流
|
||
|
||
本项目里的“完整核心支持”是:
|
||
|
||
1. 能明确选择目标数据库
|
||
2. 能验证连接
|
||
3. 能定位 schema / table / column
|
||
4. 能执行 SQL
|
||
5. 能执行参数化查询
|
||
6. 能把结果导出为 CSV / JSON
|
||
7. 能在失败时给出可行动提示,且不泄露密码
|
||
|
||
## 4. 当前阶段数据库等级
|
||
|
||
| 数据库 | 当前阶段目标等级 | 当前阶段定位 | 备注 |
|
||
| --- | --- | --- | --- |
|
||
| PostgreSQL | Tier A | 核心服务器数据库 | 当前 demo 已覆盖核心 happy path |
|
||
| MySQL | Tier A | 核心服务器数据库 | 当前 demo 已覆盖核心 happy path |
|
||
| SQLite | Tier A | 核心本地文件数据库 | 当前 demo 已覆盖核心 happy path,但允许文件型语义差异 |
|
||
|
||
结论:**当前项目不是“先做 PostgreSQL,其他顺带”;而是三种数据库都要对核心闭环负责。**
|
||
|
||
## 5. 能力矩阵
|
||
|
||
| 能力维度 | PostgreSQL | MySQL | SQLite | 当前项目要求 | 说明 |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| 连接(ad hoc) | Tier A | Tier A | Tier A | 必须统一 | 当前命令模型已经存在 |
|
||
| 连接 profile 管理 | Tier C | Tier C | Tier C | 当前不做 | 内部有 profile 概念,不等于用户可保存 / 列表化 |
|
||
| schema / table / column introspection | Tier A | Tier A | Tier A | 必须统一心智 | 允许 schema 语义按数据库差异映射 |
|
||
| query 执行 | Tier A | Tier A | Tier A | 必须统一 | 支持 inline SQL 与 `.sql` 文件 |
|
||
| 参数化查询 | Tier A | Tier A | Tier A | 必须统一 | 作为核心安全与复用能力保留 |
|
||
| 导出 CSV / JSON | Tier A | Tier A | Tier A | 必须统一 | 只承诺结果集导出 |
|
||
| 导入 | Tier C | Tier C | Tier C | 当前不做 | 不进入当前项目完成标准 |
|
||
| migration / script 执行 | Tier C | Tier C | Tier C | 当前不做 | 原始 SQL 文件执行不等于产品化 migration 工作流 |
|
||
| 事务控制 | Tier C | Tier C | Tier C | 当前不做 | 不为本期提供专门 UX 或契约 |
|
||
| 存储过程 / function | Tier C | Tier C | Tier C | 当前不做 | 可通过普通查询间接触达,但不承诺专门支持 |
|
||
| 权限与用户管理 | Tier C | Tier C | Tier C | 当前不做 | 属于管理面,易导致范围失控 |
|
||
| 备份 / 恢复 | Tier C | Tier C | Tier C | 当前不做 | 属于运维 / DBA 面,不进入当前项目 |
|
||
|
||
## 6. 哪些能力必须统一,哪些允许差异
|
||
|
||
### 必须统一支持
|
||
|
||
- 命令入口仍围绕 `connect`、`inspect`、`query`、`export`
|
||
- 成功 / 失败都必须给出稳定的终端反馈
|
||
- 参数化查询属于核心能力,不允许只在单一数据库成立
|
||
- 导出格式只承诺 CSV / JSON
|
||
- 密码只能经安全输入路径注入,输出不得泄露密码
|
||
|
||
### 允许数据库差异化
|
||
|
||
- 顶层 inspect 对象的命名和映射方式
|
||
- schema 概念的具体落点
|
||
- 多语句 SQL 的执行限制
|
||
- 返回元数据的丰富程度
|
||
- 底层驱动报错文本细节
|
||
|
||
### 当前已知差异(允许保留)
|
||
|
||
- MySQL 的 `--schema` 当前映射到数据库名
|
||
- SQLite 使用文件路径连接,不使用 host / port
|
||
- SQLite demo inspect 使用 `main` 作为 schema
|
||
- PostgreSQL / MySQL 非参数化 query 可以执行多语句 SQL 文件
|
||
- SQLite 当前按单条 statement 执行,多语句输入会显式失败
|
||
|
||
## 7. 当前阶段范围与非目标
|
||
|
||
### 当前阶段范围
|
||
|
||
- 把 PostgreSQL / MySQL / SQLite 的核心闭环做实并做稳
|
||
- 固化跨数据库一致的产品语义
|
||
- 用共享矩阵约束 CTO 的拆解边界
|
||
- 让 QA 能按数据库分层建立未来验收策略
|
||
|
||
### 当前阶段非目标
|
||
|
||
- 扩库到更多数据库
|
||
- 为单一数据库补一堆高级能力
|
||
- 把原始 SQL 执行能力包装成 migration 产品
|
||
- 进入 GUI 正式开发
|
||
- 承诺数据库管理平台式能力
|
||
|
||
## 8. 下一批候选数据库
|
||
|
||
这些数据库可进入下一阶段候选池,但**不进入当前项目承诺**:
|
||
|
||
| 候选数据库 | 保留原因 | 最早讨论时点 |
|
||
| --- | --- | --- |
|
||
| SQL Server | 企业环境常见,和当前目标用户重叠 | 当前三库 Tier A 稳定后 |
|
||
| MariaDB | 与 MySQL 用户群接近,可验证兼容价值 | 当前 MySQL 质量收敛后 |
|
||
| DuckDB | 与 SQLite 一样适合本地文件 / 分析型场景 | 当前文件型流程稳定后 |
|
||
|
||
当前不建议把 Oracle、MongoDB、Redis 等直接放入下一批:
|
||
|
||
- Oracle:产品与合规复杂度高
|
||
- MongoDB:数据模型差异过大,会改写当前统一心智
|
||
- Redis:不是当前 SQL / schema / export 产品语义的自然延伸
|
||
|
||
## 9. CLI Demo 如何向产品界面 / 产品流程演进
|
||
|
||
CLI demo 当前已经验证了未来产品最重要的五个对象:
|
||
|
||
- connection target
|
||
- catalog / schema browser state
|
||
- query request
|
||
- result set
|
||
- export action
|
||
|
||
未来 GUI 或更完整产品流程应直接映射这些对象,而不是另起一套产品语言:
|
||
|
||
- `connect` -> Connection Manager / Test Connection
|
||
- `inspect` -> Schema Browser / Object Inspector
|
||
- `query` -> Query Editor / Run Action
|
||
- `export` -> Export Drawer / Export Feedback
|
||
|
||
演进原则:
|
||
|
||
- 先复用 CLI 已稳定的产品语义
|
||
- 再增加界面层承载
|
||
- 不在 GUI 中偷偷扩充当前版本未承诺的能力
|
||
|
||
## 10. 给 CTO 和 QA 的交接说明
|
||
|
||
### 给 CTO
|
||
|
||
- 当前项目的拆解中心应是“三库同一核心闭环”,不是“继续扩命令面”
|
||
- Tier A 项必须优先保证一致性、失败路径和可发布性
|
||
- Tier C 项不要被拆成当前项目 issue,除非先有新的产品决策
|
||
|
||
### 给 QA
|
||
|
||
- 未来验收策略应先按 Tier A 能力建立主矩阵
|
||
- 同一能力要按 PostgreSQL / MySQL / SQLite 分库验证
|
||
- 差异项要记录,但不应把已允许的数据库差异误判成产品缺陷
|
||
|
||
## 11. 阶段通过标准
|
||
|
||
当前阶段可以认为产品边界清晰,当且仅当:
|
||
|
||
- PostgreSQL / MySQL / SQLite 的 Tier A 范围被团队共同接受
|
||
- Tier C 能力没有混入当前项目承诺
|
||
- CTO 可以据此继续拆任务,而不再重新解释“完整支持”是什么意思
|
||
- QA 可以据此建立分数据库验收矩阵
|