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

2.0 KiB
Raw Blame History

架构与组件

ChuSQL 由三个可执行文件组成,共用同一份配置:

组件 作用
chusql-storage 存储进程:页面与索引、WAL、崩溃恢复
chusql-web Web 管理端:REST 接口 + 浏览器里的数据库 IDE
csql 命令行客户端

数据流

SQL → 前端(chusql-web 或 csql)→ 本地端点 → chusql-storage → 磁盘。

Web 与命令行是两个并列的前端:Web 走 HTTP,命令行直连本地端点,两者共用同一份 chusql.toml、同一个管理员账号与同一张账号表——任意一端改的账号与权限, 另一端立刻生效。

一次请求经过什么

  1. 浏览器或命令行发起 SQL;
  2. 解析与语义检查(表/列是否存在、类型是否匹配、权限是否足够)在这里完成,不合格的语句不会落到磁盘;
  3. 合格语句通过本地端点交给 chusql-storage;
  4. 存储进程读写页面与索引,写之前先记 WAL;
  5. 结果原路返回。

本地端点

前端与存储进程之间只有一个端点,由 [server] pipe_name 决定:Windows 是具名管道, Linux / macOS 是套接字文件(规则见 config.md 的「端点」一节)。

数据在哪里

数据都在 [storage] data_dir 下。不写这个键就按平台惯例:Windows %LOCALAPPDATA%\ChuSQL\data, Linux / macOS ${XDG_DATA_HOME:-~/.local/share}/chusql/data。

目录 内容
system/ 系统库:账号表与角色授权表
databases/<库名>/ 各自建的库

服务启动后只建 system,没有默认工作库;其余库由你自己 CREATE DATABASE 创建。