Files
opsxdb/docs/DATABASE-OPERATIONS-AUDIT.md
logan 2c0bfafd8d 同步完整源码至远程:扁平化重构现状 + 未入库源文件
- 补入库:server/internal/db/dump.go、redis 分页/扫描预算测试、opsxdb-mcp main_test、
  packages/opsxdb-mcp package-lock、docs 审计与对比文档等 37 个新文件
- 含结构扁平化进行中的 80 处修改与 155 处旧结构删除(server/ src/ src-tauri/ 为当前有效源)
- 构建产物(bin/target/dist)与签名私钥仍按规则排除
2026-10-16 03:47:33 +08:00

12 KiB
Raw Permalink Blame History

库、表与数据迁移功能缺项盘点

更新:2026-10-14(同日复核一轮:右键与复制主路径已落地,本文相关条目同步;代码现状以根级 src / src-tauri / server 布局核查)。依据当前 OpsxDB 代码以及 DBFlux、dbx、RustGrid 本地源码/文档静态核查;未运行参考项目,能力存在不等于所有引擎已验证。本文优先于早期「整表导出尚未实现」等笼统表述。

已确认的现状

  • 按用户要求移除工作台「执行计划」按钮、结果「计划」页签及其前端执行处理。底层 API 保留兼容,不列入近期开发。
  • 表/视图节点下有字段分组(对象树自带);表节点另有索引、外键、触发器分组(TableMetadataTree,按驱动 DDL 能力挂载)。目录查询覆盖 MySQL 系列、PG 系列、SQLite,未适配引擎明确提示而非伪装空列表,尚待真库验证。
  • 右侧/结果区「结构」页有字段列表,索引/外键/触发器区块已复用对象树的目录查询,覆盖 MySQL 系列、PG 系列和 SQLite;每组单独显示加载、失败重试、空态与截断。编辑入口在表右键「设计表」,MySQL 普通索引可编辑,外键/触发器仍只读;真实数据库兼容性待验收。
  • 已有当前结果 CSV/JSON/INSERT 导出及服务端整表、完整查询导出入口;表右键已有 CSV/JSON 导出与 SQL 三态转储。这些有行数上限的导出不等于数据库备份。
  • 编辑器/结果/对象树右键主路径已于 2026-10-14 补齐一轮(格式化、注释、查找替换、定义跳转、复制与导出、SELECT/INSERT 模板、新建查询带库),验收状态以 BACKLOG §3 为准;本文只保留与结构、表设计、迁移相关的条目。AI 晚到 SQL 的原标签、未保存状态和切库保护已补回归。
  • Redis 键浏览/编辑已有独立面板(RedisKeyPane),非本盘点的关系对象迁移范畴。

库与 Schema

操作 OpsxDB 状态 缺口与优先级
新建查询、刷新、复制名称/连接地址 已有(另含设为默认库、删除库、限定名与主机端口复制) 菜单键盘、焦点、视口约束已统一实现(2026-10-14),待桌面验收;剩余为禁用项说明的一致性
默认库切换 部分 P1:PG Schema/search_path 与会话隔离验证;显示实际生效目标
新建数据库 / Schema 缺少可视化流程 P1:库名、字符集/排序规则或 owner 按方言开放,预览 SQL
删除数据库 有能力裁剪入口 P1:验收目标确认、权限失败、删除后连接与标签刷新
查看/修改库属性 缺少 P2:编码、排序规则、大小、注释;可修改项按引擎限制
批量选择表 缺少 P1:为多表导出/备份提供选择,不优先批量删除
视图、过程、函数定义管理 列表 + 视图可展开字段、复制建表/视图 SQL P2:查看/复制定义已部分具备,新建/修改/删除、参数调用仍缺;按引擎支持
用户/权限、服务器管理 缺少 后置:不挤占表设计和迁移优先级

表与表设计

操作 OpsxDB 状态 缺口与验收要求
查看数据、前 N 行、查看结构/DDL 已有 右侧结构已统一字段及三组目录;P1:点击树中索引定位对应详情,并以真库验证权限、方言差异与刷新行为
新建表 设计器 v1 已落地(2026-10-14):库右键「新建表…」/表右键「设计表…」,字段网格 + 方言化 CREATE 预览 + 应用 P0:真库验收新建→改字段→改主键全流程;表选项(引擎/字符集)后置
新增/修改/删除字段 设计器 v1 支持列级 diff ALTER(MySQL 族 ADD/DROP/MODIFY/CHANGE、PG 族 TYPE/NOT NULL/DEFAULT/RENAME;SQLite 仅 ADD) P0:真库各方言验收;结构漂移重校验(执行前被外部修改)后置
主键管理 设计器 v1 支持主键组变更(ADD/DROP PRIMARY KEY) P0:复合主键真库验收;不把普通索引当主键
创建/修改/删除索引 MySQL 系列设计器可编辑普通 BTREE/唯一及复合索引,实时预览 DROP/ADD;前缀、FULLTEXT、SPATIAL、降序等特殊索引只读。PG/SQLite 仍只读 P0:MySQL 真库验证索引重建与外部结构漂移;PG 并发索引等高级项后置
外键管理 仅查看 P1:多列映射、引用表列、ON DELETE/UPDATE;依赖检查
检查约束 未接入树/设计器 P2:读取/创建/删除,按引擎版本裁剪
触发器 主要是查看 P2:源码查看/编辑与 DDL 预览;避免假定支持原地 ALTER
重命名表、修改表注释 缺少专用操作 P1:方言转义、名称冲突、成功后刷新和旧标签提示
克隆为新表 缺少 P1:仅结构/结构+数据;明确索引、外键、触发器是否复制
清空/截断、删除表 已有危险确认入口 P1:区分 DELETE 与 TRUNCATE,事务/自增/外键语义及失败反馈
生成 SQL 表右键「生成 SQL」折叠组提供 SELECT/INSERT/UPDATE/DELETE/DDL;新开带库查询,更新/删除有主键时填 WHERE 占位,不自动执行 P1:复合主键、生成列/自增列和各方言参数占位符真库校验
表数据新增/修改/删除 部分内联修改、粘贴和删除 P1:新增行、待提交变更、明确 NULL 编辑、多行部分失败反馈,避免并发回滚覆盖
表关系图、结构比较、数据比较 缺少 结构比较 P1(只读差异,目标选择和过滤);数据比较 P2(主键、同构、分页/限量);关系图后置

设计器现状:字段、索引、外键、触发器、SQL 预览分区;大弹窗、紧凑密度、MySQL 表注释、普通索引编辑,外键/触发器只读。应用前展示 DDL 并确认,读取元数据失败或存在不支持的修改时禁止应用。未含:外键/触发器图形编辑、引擎/字符集选项、草稿保留(关闭即丢)、结构漂移重校验、SQLite 重建表流程;这些仍是后续项。

导出、导入、备份与恢复

能力 OpsxDB 状态 必须补齐的闭环
当前结果 CSV/JSON/INSERT 已有 P1:范围、编码、NULL/换行/大整数、取消/保存失败回归
整表 / 完整查询导出 表右键可导出 CSV/JSON,输入 1–500000 行上限(默认 100000);服务端流式取数,不受前端结果分页限制。右键还可转储 SQL 三态(仅结构/仅数据/结构和数据) P1:上限命中时服务端给出明确截断标志、列与条件选择、进度/取消、大表内存验证;目前文件达到上限不能判定是否完整,不可当备份
表结构 SQL 导出 表右键转储「仅结构/结构和数据」已可保存 .sql P1:多表选择、对象依赖顺序;视图/过程/函数纳入
CSV 导入 缺少向导 P0:文件预览、编码/分隔符、表头、字段映射、类型/NULL、批次、事务策略、错误行报告
SQL 文件执行/导入 缺少完整流程 P1:大文件流式读取、方言分隔符、进度/取消、失败位置;不是简单按分号切开
JSON/Excel 导入导出 JSON 结果导出已有,其他缺少 P2:先 CSV;Excel 为可选扩展,不先堆格式
单表 / 多表逻辑备份 缺少 P1:结构+数据、索引/约束/触发器范围、快照一致性说明、产物清单
整库逻辑备份 缺少 P1:MySQL/PG 优先,评估原生 dump 工具依赖或自有导出;凭据不放命令行/日志
备份恢复 缺少 P1:目标库确认、冲突策略、对象顺序、失败报告,完成后实际验证可恢复性
定时备份/保留策略/历史 缺少 P2:手动备份恢复验收后再做;桌面退出时不承诺继续运行
物理备份、PITR、binlog/WAL 归档 无 不纳入近期桌面客户端范围;逻辑 SQL 导出不能冒充灾备

三个参考项目取舍与证据

参考 静态证据 借鉴内容
dbx docs/content/docs/table-structure.cn.mdx;crates/dbx-core/src/table_structure_sql/ 的 columns/indexes/foreign_keys/sqlite_rebuild/validation;结构编辑器并发与元数据重校验测试 字段/索引设计、能力裁剪、DDL 预览、草稿与结构漂移校验,作为表设计主要参考
dbx crates/dbx-web/src/routes/table_export.rs(CSV/JSON/XLSX/SQL、进度、取消)、docs/content/docs/database-backup.cn.mdx、crates/dbx-core/src/sql_file_import/table_restore.rs 借鉴导出任务反馈、立即备份与恢复;XLSX 按真实需求后置,不把有限行导出称为备份
navop crates/db_view/src/compare/、import_export/table_import_view.rs 比较目标、差异预览、失败状态与导入映射。优先只读结构差异,再做按主键的数据比较;同步执行需独立确认与回滚策略
AnotherRedisDesktopManager src/components/OperateItem.vue、MemoryAnalysis.vue、src/redisClient.js 搜索输入、取消/分批 SCAN 与集群节点处理;不引入会阻塞服务器的 KEYS 全量搜索
DBFlux crates/dbflux_ui_document/src/import_wizard/column_mapping.rs、export_wizard/、crates/dbflux_export/src/streaming.rs、dbflux_ui_sidebar/src/operations/export_tables.rs 导入映射、按对象直达导出、步骤层级与流式任务。不能仅凭 schema_alter policy 推断完整设计器已成熟
RustGrid README_zh.md、crates/rustgrid-backup/src/lib.rs、crates/rustgrid-app/src/app/backup.rs、crates/rustgrid-postgresql/src/backup.rs 中文导入导出向导、备份/还原成对入口;不优先复制专有 .rgbak 格式,先通用 SQL/CSV

上述 dbx/navop/dbflux/rustgrid 路径相对 /Users/logan/devops/demo/db-gui/,Redis 参考项目位于 /Users/logan/devops/demo/db-client/。本文不因参考项目声明功能就宣称其全部驱动均通过验收。

Navicat 截图的数据库/表/视图与工具图标用于辨识和层级参考;OpsxDB 保留自有 SVG 图标与紧凑桌面工具栏,不复制其图形资产或将比较、备份按钮提前摆在主工具栏。结构比较 P1 先只读展示字段、索引、约束差异;数据比较 P2 要求同构表、明确主键、限量取样与差异统计,跨库同步和无主键全表比较后置。导入以 CSV 预览→字段映射→批量执行→错误报告为 P0;导出优先 CSV/JSON/SQL INSERT/结构 SQL,XLSX 为 P2,整库逻辑备份必须能恢复验证。

推荐开发顺序

  1. 结构查看验收:目录查询与错误/空态已复用;补树节点定位结构详情,并用 MySQL、PG、SQLite 真库核对索引、复合外键和触发器。
  2. 表设计器验收:字段网格、MySQL 普通索引、结构只读页签与 DDL 确认已落地;MySQL 3306 旧版建表/转储验收不覆盖本轮索引改造。下一步真库验收索引重建与结构漂移重校验。
  3. 日常迁移:CSV 导入 + 表右键导出 + SQL 文件执行;有进度、取消与错误报告。
  4. 备份恢复:先手动单库逻辑备份并完成恢复演练,再多库/定时。
  5. 按需扩展:外键/触发器编辑、克隆、关系图/比较,不把整个管理平台塞入默认右键菜单。

验收矩阵应覆盖:空表/大表/复合主键/无主键/权限不足/断连/取消/名称特殊字符/跨标签切换/结构被外部修改;每种方言单独记录。规划项未实现前不在产品中放置伪可用入口。

本地质量复核

  • 前端构建/类型检查通过,60 项前端测试通过;Go 编译和 2 项无监听的 Redis 扫描预算测试通过,差异空白检查通过。homepage 未改动。
  • 复核修正:结构页不再把索引等目录查询报错显示为「无」,三组分别加载、报错重试;AI 异步生成 SQL 保留原标签与未保存标记,用户修改 SQL 或切库后不覆盖。
  • 2026-10-14 晚补充:设计器 v1(tableDdl 11 项单测,前端合计 75 项全绿)、/api/db/dump 三态转储、⌘/ 注释快捷键修正(帮助改 ⌘⇧/);MySQL 3306 真库端到端验证建表、插数与三种转储输出后已清理测试库。
  • 尚未完成:真实 MySQL/PG/SQLite 的结构目录校验、桌面视觉/右键/剪贴板验收、表设计与导入备份闭环。完整 Go 集成测试中的本地监听用例在当前受限环境不能运行;这不等于真实数据库验收通过。