交互式数据库内核可视化工具
Interactive visualization of MySQL InnoDB B+ Tree index structures
本项目是一个基于 React 和 D3.js 的教育工具,旨在通过可视化的方式揭示 MySQL InnoDB 存储引擎中 B+树索引 的工作原理。
通过动态的交互界面,用户可以直观地观察数据插入时 B+ 树的分裂过程,理解聚簇索引 (Clustered Index) 与非聚簇索引 (Secondary Index) 的结构差异,并借助集成的大模型 (AI) 深入解析数据库内核概念。
- 🔴 聚簇索引 (Primary Key): 展示数据如何按主键 (ID) 排序存储。叶子节点包含完整的行数据 (Row Data)。
- 🔵 非聚簇索引 (Secondary Index): 展示辅助索引 (如 Age) 的结构。叶子节点存储索引键值 + 主键 ID,直观演示回表 (Row Lookup) 的基础结构。
- 实时增删: 手动添加或删除数据行,观察树结构的实时重组。
- 🎲 随机生成: 支持一键生成随机数据,快速构建复杂的 B+ 树结构,观察节点分裂 (Split) 和平衡过程。
集成多模型 AI 支持,点击任意节点即可获取上下文相关的专业解释:
- Google Gemini: 默认支持。
- SiliconFlow (硅基流动): 支持 DeepSeek 等高性能模型。
- Ollama: 支持本地 LLM 运行。
- 场景示例: 点击非聚簇索引的叶子节点,AI 会解释为什么这里只有 ID 而没有完整数据。
- 实时生成当前结构的 SQL 语句 (
CREATE TABLE,CREATE INDEX). - 展示当前的
INSERT语句流,方便理解数据状态。
- Frontend: React 19, TypeScript
- Styling: Tailwind CSS
- Visualization: D3.js (用于绘制动态 SVG 树状图)
- Icons: Lucide React
- AI SDK: Google GenAI SDK, Custom Fetch for OpenAI-compatible APIs
-
克隆仓库
git clone https://github.com/yourusername/innodb-btree-viz.git cd innodb-btree-viz -
安装依赖
npm install
-
启动开发服务器
npm run dev
-
打开浏览器访问
http://localhost:3000(或控制台提示的地址)。
- 聚簇索引 (PK): 查看主键索引树。
- 非聚簇索引 (Age): 查看 Age 字段的辅助索引树。
- DDL & Index: 查看对应的 SQL 定义。
点击右上角的 设置 (Settings) 图标配置 AI 服务:
- Gemini: 输入您的 Google API Key。
- SiliconFlow: 输入 API Token (Base URL 默认为
https://api.siliconflow.cn/v1)。 - Ollama: 确保本地 Ollama 服务已启动,且允许跨域 (Base URL 默认为
http://localhost:11434/v1)。
💡 Tip: 点击图表中的 "Leaf Page" (绿色节点) 可以触发 AI 分析该数据页的内容。
Made with ❤️ by Frontend Engineer