Files
ChuSQL/doc/architecture.md
T
LIm1tZz7 df6d348995 大更新:
1、完善SQL语法
2、移除node前端,只保留静态资源
3、写好安装脚本
4、做好linux适配
2026-10-01 20:48:38 +08:00

43 lines
2.0 KiB
Markdown
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.
# 架构与组件
ChuSQL 由三个可执行文件组成,共用同一份配置:
| 组件 | 作用 |
| ------------------ | ------------------------------------------------------- |
| `chusql-storage` | 存储进程:页面与索引、WAL、崩溃恢复 |
| `chusql-web` | Web 管理端:REST 接口 + 浏览器里的数据库 IDE |
| `csql` | 命令行客户端 |
## 数据流
SQL → 前端(`chusql-web` 或 `csql`)→ 本地端点 → `chusql-storage` → 磁盘。
Web 与命令行是两个并列的前端:Web 走 HTTP,命令行直连本地端点,两者共用同一份
[`chusql.toml`](config.md)、同一个管理员账号与同一张账号表——任意一端改的账号与权限,
另一端立刻生效。
## 一次请求经过什么
1. 浏览器或命令行发起 SQL;
2. 解析与语义检查(表/列是否存在、类型是否匹配、权限是否足够)在这里完成,不合格的语句不会落到磁盘;
3. 合格语句通过本地端点交给 `chusql-storage`;
4. 存储进程读写页面与索引,写之前先记 WAL;
5. 结果原路返回。
## 本地端点
前端与存储进程之间只有一个端点,由 `[server] pipe_name` 决定:Windows 是具名管道,
Linux / macOS 是套接字文件(规则见 [config.md](config.md) 的「端点」一节)。
## 数据在哪里
数据都在 `[storage] data_dir` 下。不写这个键就按平台惯例:Windows `%LOCALAPPDATA%\ChuSQL\data`,
Linux / macOS `${XDG_DATA_HOME:-~/.local/share}/chusql/data`。
| 目录 | 内容 |
| --------------------- | ---------------------------- |
| `system/` | 系统库:账号表与角色授权表 |
| `databases/<库名>/` | 各自建的库 |
服务启动后只建 `system`,**没有默认工作库**;其余库由你自己 `CREATE DATABASE` 创建。